1cb93a386Sopenharmony_ci 2cb93a386Sopenharmony_ci/* 3cb93a386Sopenharmony_ci * Copyright 2016 Google Inc. 4cb93a386Sopenharmony_ci * 5cb93a386Sopenharmony_ci * Use of this source code is governed by a BSD-style license that can be 6cb93a386Sopenharmony_ci * found in the LICENSE file. 7cb93a386Sopenharmony_ci */ 8cb93a386Sopenharmony_ci 9cb93a386Sopenharmony_ci#ifndef WindowContextFactory_unix_DEFINED 10cb93a386Sopenharmony_ci#define WindowContextFactory_unix_DEFINED 11cb93a386Sopenharmony_ci 12cb93a386Sopenharmony_ci// webgpu_cpp.h and X.h don't get along. Include this first, before X11 defines None, Success etc. 13cb93a386Sopenharmony_ci#ifdef SK_DAWN 14cb93a386Sopenharmony_ci#include "dawn/webgpu_cpp.h" 15cb93a386Sopenharmony_ci#endif 16cb93a386Sopenharmony_ci#include <X11/Xlib.h> 17cb93a386Sopenharmony_ci#include <GL/glx.h> 18cb93a386Sopenharmony_ci 19cb93a386Sopenharmony_ci#include <memory> 20cb93a386Sopenharmony_ci 21cb93a386Sopenharmony_citypedef Window XWindow; 22cb93a386Sopenharmony_ci 23cb93a386Sopenharmony_cinamespace sk_app { 24cb93a386Sopenharmony_ci 25cb93a386Sopenharmony_ciclass WindowContext; 26cb93a386Sopenharmony_cistruct DisplayParams; 27cb93a386Sopenharmony_ci 28cb93a386Sopenharmony_cinamespace window_context_factory { 29cb93a386Sopenharmony_ci 30cb93a386Sopenharmony_cistruct XlibWindowInfo { 31cb93a386Sopenharmony_ci Display* fDisplay; 32cb93a386Sopenharmony_ci XWindow fWindow; 33cb93a386Sopenharmony_ci GLXFBConfig* fFBConfig; 34cb93a386Sopenharmony_ci XVisualInfo* fVisualInfo; 35cb93a386Sopenharmony_ci int fWidth; 36cb93a386Sopenharmony_ci int fHeight; 37cb93a386Sopenharmony_ci}; 38cb93a386Sopenharmony_ci 39cb93a386Sopenharmony_cistd::unique_ptr<WindowContext> MakeVulkanForXlib(const XlibWindowInfo&, const DisplayParams&); 40cb93a386Sopenharmony_ci 41cb93a386Sopenharmony_cistd::unique_ptr<WindowContext> MakeGLForXlib(const XlibWindowInfo&, const DisplayParams&); 42cb93a386Sopenharmony_ci 43cb93a386Sopenharmony_ci#ifdef SK_DAWN 44cb93a386Sopenharmony_cistd::unique_ptr<WindowContext> MakeDawnVulkanForXlib(const XlibWindowInfo&, const DisplayParams&); 45cb93a386Sopenharmony_ci#endif 46cb93a386Sopenharmony_ci 47cb93a386Sopenharmony_cistd::unique_ptr<WindowContext> MakeRasterForXlib(const XlibWindowInfo&, const DisplayParams&); 48cb93a386Sopenharmony_ci 49cb93a386Sopenharmony_ci} // namespace window_context_factory 50cb93a386Sopenharmony_ci 51cb93a386Sopenharmony_ci} // namespace sk_app 52cb93a386Sopenharmony_ci 53cb93a386Sopenharmony_ci#endif 54