16e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved. 26e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 36e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)// found in the LICENSE file. 46e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 56e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)#ifndef MOJO_PUBLIC_PLATFORM_NATIVE_GLES2_IMPL_CHROMIUM_SYNC_POINT_THUNKS_H_ 66e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)#define MOJO_PUBLIC_PLATFORM_NATIVE_GLES2_IMPL_CHROMIUM_SYNC_POINT_THUNKS_H_ 76e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 86e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)#include <stddef.h> 96e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 106e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)#include "mojo/public/c/gles2/chromium_sync_point.h" 116e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 126e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)// Specifies the frozen API for the GLES2 CHROMIUM_sync_point extension. 136e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)#pragma pack(push, 8) 146e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)struct MojoGLES2ImplChromiumSyncPointThunks { 156e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) size_t size; // Should be set to sizeof(*this). 166e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 176e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)#define VISIT_GL_CALL(Function, ReturnType, PARAMETERS, ARGUMENTS) \ 186e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) ReturnType(*Function) PARAMETERS; 196e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)#include "mojo/public/c/gles2/gles2_call_visitor_chromium_sync_point_autogen.h" 206e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)#undef VISIT_GL_CALL 216e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)}; 226e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)#pragma pack(pop) 236e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 246e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)// Intended to be called from the embedder to get the embedder's implementation 256e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)// of GLES2. 266e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)inline MojoGLES2ImplChromiumSyncPointThunks 276e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)MojoMakeGLES2ImplChromiumSyncPointThunks() { 286e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) MojoGLES2ImplChromiumSyncPointThunks gles2_impl_chromium_sync_point_thunks = { 296e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) sizeof(MojoGLES2ImplChromiumSyncPointThunks), 306e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)#define VISIT_GL_CALL(Function, ReturnType, PARAMETERS, ARGUMENTS) gl##Function, 316e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)#include "mojo/public/c/gles2/gles2_call_visitor_chromium_sync_point_autogen.h" 326e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)#undef VISIT_GL_CALL 336e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) }; 346e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 356e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) return gles2_impl_chromium_sync_point_thunks; 366e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)} 376e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 386e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)// Use this type for the function found by dynamically discovering it in 396e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)// a DSO linked with mojo_system. 406e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)// The contents of |gles2_impl_chromium_sync_point_thunks| are copied. 416e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)typedef size_t (*MojoSetGLES2ImplChromiumSyncPointThunksFn)( 426e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) const MojoGLES2ImplChromiumSyncPointThunks* thunks); 436e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 446e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)#endif // MOJO_PUBLIC_PLATFORM_NATIVE_GLES2_IMPL_CHROMIUM_SYNC_POINT_THUNKS_H_ 45