47 GHOST_ContextCGL(
bool stereoVisual, NSView *metalView, CAMetalLayer *metalLayer,
int debug);
129 MTLRenderPassDescriptor *, id<MTLRenderPipelineState>, id<MTLTexture>, id<CAMetalDrawable>));
134 CAMetalLayer *m_metalLayer;
135 MTLRenderPipelineState *m_metalRenderPipeline;
136 bool m_ownsMetalDevice;
144 static const int METAL_SWAPCHAIN_SIZE = 3;
145 struct MTLSwapchainTexture {
146 id<MTLTexture> texture;
149 MTLSwapchainTexture m_defaultFramebufferMetalTexture[METAL_SWAPCHAIN_SIZE];
150 unsigned int current_swapchain_index = 0;
157 void (*contextPresentCallback)(MTLRenderPassDescriptor *,
158 id<MTLRenderPipelineState>,
160 id<CAMetalDrawable>);
162 int mtl_SwapInterval;
165 static int s_sharedCount;
168 static MTLCommandQueue *s_sharedMetalCommandQueue;
173 void metalInitFramebuffer();
174 void metalUpdateFramebuffer();
175 void metalSwapBuffers();
void metalRegisterPresentCallback(void(*callback)(MTLRenderPassDescriptor *, id< MTLRenderPipelineState >, id< MTLTexture >, id< CAMetalDrawable >))
GHOST_TSuccess updateDrawingContext() override
id< MTLTexture > metalOverlayTexture()
GHOST_TSuccess swapBuffers() override
GHOST_TSuccess activateDrawingContext() override
GHOST_TSuccess getSwapInterval(int &intervalOut) override
MTLDevice * metalDevice()
GHOST_ContextCGL(bool stereoVisual, NSView *metalView, CAMetalLayer *metalLayer, int debug)
GHOST_TSuccess releaseDrawingContext() override
static const int max_command_buffer_count
GHOST_TSuccess initializeDrawingContext() override
unsigned int getDefaultFramebuffer() override
MTLCommandQueue * metalCommandQueue()
GHOST_TSuccess releaseNativeHandles() override
GHOST_TSuccess setSwapInterval(int interval) override
~GHOST_ContextCGL() override