1 // Copyright 2014 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef MOJO_PUBLIC_PLATFORM_NATIVE_GLES2_IMPL_CHROMIUM_TEXTURE_MAILBOX_THUNKS_H_ 6 #define MOJO_PUBLIC_PLATFORM_NATIVE_GLES2_IMPL_CHROMIUM_TEXTURE_MAILBOX_THUNKS_H_ 7 8 #include <stddef.h> 9 10 #include "mojo/public/c/gles2/chromium_texture_mailbox.h" 11 12 // Specifies the frozen API for the GLES2 CHROMIUM_texture_mailbox extension. 13 #pragma pack(push, 8) 14 struct MojoGLES2ImplChromiumTextureMailboxThunks { 15 size_t size; // Should be set to sizeof(*this). 16 17 #define VISIT_GL_CALL(Function, ReturnType, PARAMETERS, ARGUMENTS) \ 18 ReturnType(*Function) PARAMETERS; 19 #include "mojo/public/c/gles2/gles2_call_visitor_chromium_texture_mailbox_autogen.h" 20 #undef VISIT_GL_CALL 21 }; 22 #pragma pack(pop) 23 24 // Intended to be called from the embedder to get the embedder's implementation 25 // of GLES2. 26 inline MojoGLES2ImplChromiumTextureMailboxThunks 27 MojoMakeGLES2ImplChromiumTextureMailboxThunks() { 28 MojoGLES2ImplChromiumTextureMailboxThunks 29 gles2_impl_chromium_texture_mailbox_thunks = { 30 sizeof(MojoGLES2ImplChromiumTextureMailboxThunks), 31 #define VISIT_GL_CALL(Function, ReturnType, PARAMETERS, ARGUMENTS) gl##Function, 32 #include "mojo/public/c/gles2/gles2_call_visitor_chromium_texture_mailbox_autogen.h" 33 #undef VISIT_GL_CALL 34 }; 35 36 return gles2_impl_chromium_texture_mailbox_thunks; 37 } 38 39 // Use this type for the function found by dynamically discovering it in 40 // a DSO linked with mojo_system. 41 // The contents of |gles2_impl_chromium_texture_mailbox_thunks| are copied. 42 typedef size_t (*MojoSetGLES2ImplChromiumTextureMailboxThunksFn)( 43 const MojoGLES2ImplChromiumTextureMailboxThunks* thunks); 44 45 #endif // MOJO_PUBLIC_PLATFORM_NATIVE_GLES2_IMPL_CHROMIUM_TEXTURE_MAILBOX_THUNKS_H_ 46