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: 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 gpu::CommandBuffer::State GetState() = 0; 35 virtual int32_t CreateTransferBuffer(uint32_t size) = 0; 36 virtual PP_Bool DestroyTransferBuffer(int32_t id) = 0; 37 virtual PP_Bool GetTransferBuffer(int32_t id, 38 int* shm_handle, 39 uint32_t* shm_size) = 0; 40 virtual PP_Bool Flush(int32_t put_offset) = 0; 41 virtual gpu::CommandBuffer::State FlushSync(int32_t put_offset) = 0; 42 virtual gpu::CommandBuffer::State FlushSyncFast(int32_t put_offset, 43 int32_t last_known_get) = 0; 44 45 // GLESChromiumTextureMapping. 46 virtual void* MapTexSubImage2DCHROMIUM(GLenum target, 47 GLint level, 48 GLint xoffset, 49 GLint yoffset, 50 GLsizei width, 51 GLsizei height, 52 GLenum format, 53 GLenum type, 54 GLenum access) = 0; 55 virtual void UnmapTexSubImage2DCHROMIUM(const void* mem) = 0; 56 57 virtual uint32_t InsertSyncPoint() = 0; 58 }; 59 60 } // namespace thunk 61 } // namespace ppapi 62 63 #endif // PPAPI_THUNK_PPB_GRAPHICS_3D_API_H_ 64