1 // Copyright (c) 2012 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 PPAPI_THUNK_PPB_GRAPHICS_3D_API_H_ 6 #define PPAPI_THUNK_PPB_GRAPHICS_3D_API_H_ 7 8 #include "base/memory/ref_counted.h" 9 #include "gpu/command_buffer/common/command_buffer.h" 10 #include "ppapi/c/ppb_graphics_3d.h" 11 #include "ppapi/c/dev/ppb_gles_chromium_texture_mapping_dev.h" 12 #include "ppapi/thunk/ppapi_thunk_export.h" 13 14 namespace ppapi { 15 16 class TrackedCallback; 17 18 namespace thunk { 19 20 class PPAPI_THUNK_EXPORT PPB_Graphics3D_API { 21 public: ~PPB_Graphics3D_API()22 virtual ~PPB_Graphics3D_API() {} 23 24 // Graphics3D API. 25 virtual int32_t GetAttribs(int32_t attrib_list[]) = 0; 26 virtual int32_t SetAttribs(const int32_t attrib_list[]) = 0; 27 virtual int32_t GetError() = 0; 28 virtual int32_t ResizeBuffers(int32_t width, int32_t height) = 0; 29 virtual int32_t SwapBuffers(scoped_refptr<TrackedCallback> callback) = 0; 30 virtual int32_t GetAttribMaxValue(int32_t attribute, int32_t* value) = 0; 31 32 // Graphics3DTrusted API. 33 virtual PP_Bool SetGetBuffer(int32_t shm_id) = 0; 34 virtual scoped_refptr<gpu::Buffer> CreateTransferBuffer(uint32_t size, 35 int32_t* id) = 0; 36 virtual PP_Bool DestroyTransferBuffer(int32_t id) = 0; 37 virtual PP_Bool Flush(int32_t put_offset) = 0; 38 virtual gpu::CommandBuffer::State WaitForTokenInRange(int32_t start, 39 int32_t end) = 0; 40 virtual gpu::CommandBuffer::State WaitForGetOffsetInRange(int32_t start, 41 int32_t end) = 0; 42 43 // GLESChromiumTextureMapping. 44 virtual void* MapTexSubImage2DCHROMIUM(GLenum target, 45 GLint level, 46 GLint xoffset, 47 GLint yoffset, 48 GLsizei width, 49 GLsizei height, 50 GLenum format, 51 GLenum type, 52 GLenum access) = 0; 53 virtual void UnmapTexSubImage2DCHROMIUM(const void* mem) = 0; 54 55 virtual uint32_t InsertSyncPoint() = 0; 56 virtual uint32_t InsertFutureSyncPoint() = 0; 57 virtual void RetireSyncPoint(uint32_t sync_point) = 0; 58 }; 59 60 } // namespace thunk 61 } // namespace ppapi 62 63 #endif // PPAPI_THUNK_PPB_GRAPHICS_3D_API_H_ 64