Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(361)

Side by Side Diff: webkit/gpu/webgraphicscontext3d_in_process_command_buffer_impl.cc

Issue 14456004: GPU client side changes for GpuMemoryBuffers (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@glapi
Patch Set: Delete and add gl_image_mock again Created 7 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 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 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "webkit/gpu/webgraphicscontext3d_in_process_command_buffer_impl.h" 5 #include "webkit/gpu/webgraphicscontext3d_in_process_command_buffer_impl.h"
6 6
7 #include <GLES2/gl2.h> 7 #include <GLES2/gl2.h>
8 #ifndef GL_GLEXT_PROTOTYPES 8 #ifndef GL_GLEXT_PROTOTYPES
9 #define GL_GLEXT_PROTOTYPES 1 9 #define GL_GLEXT_PROTOTYPES 1
10 #endif 10 #endif
11 #include <GLES2/gl2ext.h> 11 #include <GLES2/gl2ext.h>
12 #include <GLES2/gl2extchromium.h> 12 #include <GLES2/gl2extchromium.h>
13 13
14 #include <algorithm> 14 #include <algorithm>
15 #include <set> 15 #include <set>
16 #include <string> 16 #include <string>
17 17
18 #include "base/bind.h" 18 #include "base/bind.h"
19 #include "base/bind_helpers.h" 19 #include "base/bind_helpers.h"
20 #include "base/callback.h" 20 #include "base/callback.h"
21 #include "base/command_line.h" 21 #include "base/command_line.h"
22 #include "base/lazy_instance.h" 22 #include "base/lazy_instance.h"
23 #include "base/logging.h" 23 #include "base/logging.h"
24 #include "base/memory/singleton.h" 24 #include "base/memory/singleton.h"
25 #include "base/message_loop.h" 25 #include "base/message_loop.h"
26 #include "base/metrics/histogram.h" 26 #include "base/metrics/histogram.h"
27 #include "base/synchronization/lock.h" 27 #include "base/synchronization/lock.h"
28 #include "gpu/command_buffer/client/gles2_implementation.h" 28 #include "gpu/command_buffer/client/gles2_implementation.h"
29 #include "gpu/command_buffer/client/gles2_lib.h" 29 #include "gpu/command_buffer/client/gles2_lib.h"
30 #include "gpu/command_buffer/client/gpu_memory_buffer_factory.h"
31 #include "gpu/command_buffer/client/image_factory.h"
30 #include "gpu/command_buffer/client/transfer_buffer.h" 32 #include "gpu/command_buffer/client/transfer_buffer.h"
31 #include "gpu/command_buffer/common/constants.h" 33 #include "gpu/command_buffer/common/constants.h"
32 #include "gpu/command_buffer/service/command_buffer_service.h" 34 #include "gpu/command_buffer/service/command_buffer_service.h"
33 #include "gpu/command_buffer/service/context_group.h" 35 #include "gpu/command_buffer/service/context_group.h"
34 #include "gpu/command_buffer/service/gl_context_virtual.h" 36 #include "gpu/command_buffer/service/gl_context_virtual.h"
35 #include "gpu/command_buffer/service/gpu_scheduler.h" 37 #include "gpu/command_buffer/service/gpu_scheduler.h"
38 #include "gpu/command_buffer/service/image_manager.h"
36 #include "gpu/command_buffer/service/transfer_buffer_manager.h" 39 #include "gpu/command_buffer/service/transfer_buffer_manager.h"
37 #include "ui/gl/gl_context.h" 40 #include "ui/gl/gl_context.h"
41 #include "ui/gl/gl_image.h"
38 #include "ui/gl/gl_share_group.h" 42 #include "ui/gl/gl_share_group.h"
39 #include "ui/gl/gl_surface.h" 43 #include "ui/gl/gl_surface.h"
40 #include "webkit/gpu/gl_bindings_skia_cmd_buffer.h" 44 #include "webkit/gpu/gl_bindings_skia_cmd_buffer.h"
41 45
42 using gpu::Buffer; 46 using gpu::Buffer;
43 using gpu::CommandBuffer; 47 using gpu::CommandBuffer;
44 using gpu::CommandBufferService; 48 using gpu::CommandBufferService;
45 using gpu::gles2::GLES2CmdHelper; 49 using gpu::gles2::GLES2CmdHelper;
46 using gpu::gles2::GLES2Implementation; 50 using gpu::gles2::GLES2Implementation;
51 using gpu::gles2::ImageFactory;
52 using gpu::gles2::ImageManager;
53 using gpu::GpuMemoryBuffer;
47 using gpu::GpuScheduler; 54 using gpu::GpuScheduler;
48 using gpu::TransferBuffer; 55 using gpu::TransferBuffer;
49 using gpu::TransferBufferManager; 56 using gpu::TransferBufferManager;
50 using gpu::TransferBufferManagerInterface; 57 using gpu::TransferBufferManagerInterface;
51 58
52 namespace webkit { 59 namespace webkit {
53 namespace gpu { 60 namespace gpu {
54 61
55 class GLInProcessContext { 62 class GLInProcessContext {
56 public: 63 public:
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after
155 bool Initialize(bool is_offscreen, 162 bool Initialize(bool is_offscreen,
156 gfx::AcceleratedWidget window, 163 gfx::AcceleratedWidget window,
157 const gfx::Size& size, 164 const gfx::Size& size,
158 const char* allowed_extensions, 165 const char* allowed_extensions,
159 const int32* attrib_list, 166 const int32* attrib_list,
160 gfx::GpuPreference gpu_preference); 167 gfx::GpuPreference gpu_preference);
161 void Destroy(); 168 void Destroy();
162 169
163 void OnContextLost(); 170 void OnContextLost();
164 171
172 ::gpu::gles2::ImageManager* GetImageManager();
173
165 base::Closure context_lost_callback_; 174 base::Closure context_lost_callback_;
166 scoped_ptr<TransferBufferManagerInterface> transfer_buffer_manager_; 175 scoped_ptr<TransferBufferManagerInterface> transfer_buffer_manager_;
167 scoped_ptr<CommandBufferService> command_buffer_; 176 scoped_ptr<CommandBufferService> command_buffer_;
168 scoped_ptr< ::gpu::GpuScheduler> gpu_scheduler_; 177 scoped_ptr< ::gpu::GpuScheduler> gpu_scheduler_;
169 scoped_ptr< ::gpu::gles2::GLES2Decoder> decoder_; 178 scoped_ptr< ::gpu::gles2::GLES2Decoder> decoder_;
170 scoped_refptr<gfx::GLContext> context_; 179 scoped_refptr<gfx::GLContext> context_;
171 scoped_refptr<gfx::GLSurface> surface_; 180 scoped_refptr<gfx::GLSurface> surface_;
172 scoped_ptr<GLES2CmdHelper> gles2_helper_; 181 scoped_ptr<GLES2CmdHelper> gles2_helper_;
173 scoped_ptr<TransferBuffer> transfer_buffer_; 182 scoped_ptr<TransferBuffer> transfer_buffer_;
174 scoped_ptr<GLES2Implementation> gles2_implementation_; 183 scoped_ptr<GLES2Implementation> gles2_implementation_;
184 scoped_ptr< ::gpu::gles2::ImageFactory> image_factory_;
no sievers 2013/05/14 21:10:03 Instead of having the scoped_ptr here that only ge
kaanb 2013/05/14 23:37:09 Done.
175 scoped_ptr<WebKit::WebGraphicsContext3D::WebGraphicsSyncPointCallback> 185 scoped_ptr<WebKit::WebGraphicsContext3D::WebGraphicsSyncPointCallback>
176 signal_sync_point_callback_; 186 signal_sync_point_callback_;
177 Error last_error_; 187 Error last_error_;
178 bool share_resources_; 188 bool share_resources_;
179 bool context_lost_; 189 bool context_lost_;
180 190
181 DISALLOW_COPY_AND_ASSIGN(GLInProcessContext); 191 DISALLOW_COPY_AND_ASSIGN(GLInProcessContext);
182 }; 192 };
183 193
184 namespace { 194 namespace {
185 195
186 const int32 kCommandBufferSize = 1024 * 1024; 196 const int32 kCommandBufferSize = 1024 * 1024;
187 // TODO(kbr): make the transfer buffer size configurable via context 197 // TODO(kbr): make the transfer buffer size configurable via context
188 // creation attributes. 198 // creation attributes.
189 const size_t kStartTransferBufferSize = 4 * 1024 * 1024; 199 const size_t kStartTransferBufferSize = 4 * 1024 * 1024;
190 const size_t kMinTransferBufferSize = 1 * 256 * 1024; 200 const size_t kMinTransferBufferSize = 1 * 256 * 1024;
191 const size_t kMaxTransferBufferSize = 16 * 1024 * 1024; 201 const size_t kMaxTransferBufferSize = 16 * 1024 * 1024;
192 202
203 class ImageFactoryInProcess : public ImageFactory {
204 public:
205 ImageFactoryInProcess();
206 explicit ImageFactoryInProcess(ImageManager* image_manager);
207 virtual ~ImageFactoryInProcess();
208 void SetImageManager(ImageManager* image_manager);
no sievers 2013/05/14 21:10:03 Then this could go too.
kaanb 2013/05/14 23:37:09 Done.
209
210 // methods from ImageFactory
211 virtual scoped_ptr<GpuMemoryBuffer> CreateGpuMemoryBuffer(
212 int width, int height, GLenum internalformat,
213 unsigned* image_id) OVERRIDE;
214 virtual void DeleteGpuMemoryBuffer(unsigned image_id) OVERRIDE;
215 private:
216 scoped_refptr<ImageManager> image_manager_;
no sievers 2013/05/14 22:18:08 This is a problem too, since ImageManager is not R
kaanb 2013/05/14 23:37:09 I believe this is fine since ImageManager is ref'd
217 unsigned next_id_;
218 base::Lock lock_;
219
220 DISALLOW_COPY_AND_ASSIGN(ImageFactoryInProcess);
221 };
222
223 ImageFactoryInProcess::ImageFactoryInProcess()
224 : image_manager_(NULL),
225 next_id_(0) {
no sievers 2013/05/14 21:10:03 This could go.
kaanb 2013/05/14 23:37:09 Done.
226 }
227
228 ImageFactoryInProcess::ImageFactoryInProcess(
229 ImageManager* image_manager) : image_manager_(image_manager),
230 next_id_(0) {
231 }
232
233 ImageFactoryInProcess::~ImageFactoryInProcess() {
234 }
235
236 void ImageFactoryInProcess::SetImageManager(ImageManager* image_manager) {
237 image_manager_ = image_manager;
238 }
239
240 scoped_ptr<GpuMemoryBuffer> ImageFactoryInProcess::CreateGpuMemoryBuffer(
241 int width, int height, GLenum internalformat, unsigned int* image_id) {
242 base::AutoLock scoped_lock(lock_);
no sievers 2013/05/14 21:10:03 I think you actually need the global lock (AutoLoc
no sievers 2013/05/14 21:22:06 Damn, this is slightly ugly. There is at least one
kaanb 2013/05/14 23:37:09 Done.
243 // TODO(kaanb): Check with reviewers if GL_RGBA8_OES is the right
244 // constant to use. If not which header should we include to make GL_RGBA8
245 // visible?
246 // For Android WebView we assume the |internalformat| will always be
247 // GL_RGBA8_OES.
248 DCHECK_EQ(GL_RGBA8_OES, internalformat);
249 const GpuMemoryBuffer::Creator& create_gpu_memory_buffer_callback =
250 ::gpu::gles2::GetProcessDefaultGpuMemoryBufferFactory();
251 scoped_ptr<GpuMemoryBuffer> buffer =
252 create_gpu_memory_buffer_callback.Run(width, height);
253 scoped_refptr<gfx::GLImage> gl_image =
254 gfx::GLImage::CreateGLImageForGpuMemoryBuffer(buffer->GetNativeBuffer(),
255 gfx::Size(width, height));
256 *image_id = ++next_id_; // Valid image_ids start from 1.
257 image_manager_->AddImage(gl_image, *image_id);
258 return buffer.Pass();
259 }
260
261 void ImageFactoryInProcess::DeleteGpuMemoryBuffer(unsigned int image_id) {
262 base::AutoLock scoped_lock(lock_);
263 image_manager_->RemoveImage(image_id);
264 }
265
193 // Singleton used to initialize and terminate the gles2 library. 266 // Singleton used to initialize and terminate the gles2 library.
194 class GLES2Initializer { 267 class GLES2Initializer {
195 public: 268 public:
196 GLES2Initializer() { 269 GLES2Initializer() {
197 gles2::Initialize(); 270 gles2::Initialize();
198 } 271 }
199 272
200 ~GLES2Initializer() { 273 ~GLES2Initializer() {
201 gles2::Terminate(); 274 gles2::Terminate();
202 } 275 }
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
245 // threadsafe, so we guard entry points with a mutex. 318 // threadsafe, so we guard entry points with a mutex.
246 static base::LazyInstance<base::Lock> g_decoder_lock = 319 static base::LazyInstance<base::Lock> g_decoder_lock =
247 LAZY_INSTANCE_INITIALIZER; 320 LAZY_INSTANCE_INITIALIZER;
248 321
249 static base::LazyInstance< 322 static base::LazyInstance<
250 std::set<GLInProcessContext*> > 323 std::set<GLInProcessContext*> >
251 g_all_shared_contexts = LAZY_INSTANCE_INITIALIZER; 324 g_all_shared_contexts = LAZY_INSTANCE_INITIALIZER;
252 325
253 static bool g_use_virtualized_gl_context = false; 326 static bool g_use_virtualized_gl_context = false;
254 327
328 static base::LazyInstance<ImageFactoryInProcess> g_image_factory =
329 LAZY_INSTANCE_INITIALIZER;
no sievers 2013/05/14 21:10:03 You probably don't need this if you go with the re
kaanb 2013/05/14 23:37:09 Done.
330
255 namespace { 331 namespace {
256 332
257 // Also calls DetachFromThread on all GLES2Decoders before the lock is released 333 // Also calls DetachFromThread on all GLES2Decoders before the lock is released
258 // to maintain the invariant that all decoders are unbounded while the lock is 334 // to maintain the invariant that all decoders are unbounded while the lock is
259 // not held. This is to workaround DumpRenderTree uses WGC3DIPCBI with shared 335 // not held. This is to workaround DumpRenderTree uses WGC3DIPCBI with shared
260 // resources on different threads. 336 // resources on different threads.
261 class AutoLockAndDecoderDetachThread { 337 class AutoLockAndDecoderDetachThread {
262 public: 338 public:
263 AutoLockAndDecoderDetachThread(base::Lock& lock, 339 AutoLockAndDecoderDetachThread(base::Lock& lock,
264 const std::set<GLInProcessContext*>& contexts); 340 const std::set<GLInProcessContext*>& contexts);
(...skipping 145 matching lines...) Expand 10 before | Expand all | Expand 10 after
410 486
411 // TODO(gman): Remove This 487 // TODO(gman): Remove This
412 void GLInProcessContext::DisableShaderTranslation() { 488 void GLInProcessContext::DisableShaderTranslation() {
413 NOTREACHED(); 489 NOTREACHED();
414 } 490 }
415 491
416 GLES2Implementation* GLInProcessContext::GetImplementation() { 492 GLES2Implementation* GLInProcessContext::GetImplementation() {
417 return gles2_implementation_.get(); 493 return gles2_implementation_.get();
418 } 494 }
419 495
496 ::gpu::gles2::ImageManager* GLInProcessContext::GetImageManager() {
497 return decoder_->GetContextGroup()->image_manager();
498 }
499
420 GLInProcessContext::GLInProcessContext(bool share_resources) 500 GLInProcessContext::GLInProcessContext(bool share_resources)
421 : last_error_(SUCCESS), 501 : last_error_(SUCCESS),
422 share_resources_(share_resources), 502 share_resources_(share_resources),
423 context_lost_(false) { 503 context_lost_(false) {
424 } 504 }
425 505
426 bool GLInProcessContext::Initialize( 506 bool GLInProcessContext::Initialize(
427 bool is_offscreen, 507 bool is_offscreen,
428 gfx::AcceleratedWidget window, 508 gfx::AcceleratedWidget window,
429 const gfx::Size& size, 509 const gfx::Size& size,
(...skipping 156 matching lines...) Expand 10 before | Expand all | Expand 10 after
586 // Create the GLES2 helper, which writes the command buffer protocol. 666 // Create the GLES2 helper, which writes the command buffer protocol.
587 gles2_helper_.reset(new GLES2CmdHelper(command_buffer_.get())); 667 gles2_helper_.reset(new GLES2CmdHelper(command_buffer_.get()));
588 if (!gles2_helper_->Initialize(kCommandBufferSize)) { 668 if (!gles2_helper_->Initialize(kCommandBufferSize)) {
589 Destroy(); 669 Destroy();
590 return false; 670 return false;
591 } 671 }
592 672
593 // Create a transfer buffer. 673 // Create a transfer buffer.
594 transfer_buffer_.reset(new TransferBuffer(gles2_helper_.get())); 674 transfer_buffer_.reset(new TransferBuffer(gles2_helper_.get()));
595 675
676 if (share_resources_) {
677 g_image_factory.Pointer()->SetImageManager(GetImageManager());
no sievers 2013/05/14 21:10:03 ...if sharing resources grab the factory from the
kaanb 2013/05/14 23:37:09 Done.
678 } else {
679 // Create the image factory, this object retains its ownership.
680 image_factory_.reset(new ImageFactoryInProcess(GetImageManager()));
681 }
682
596 // Create the object exposing the OpenGL API. 683 // Create the object exposing the OpenGL API.
597 gles2_implementation_.reset(new GLES2Implementation( 684 gles2_implementation_.reset(new GLES2Implementation(
598 gles2_helper_.get(), 685 gles2_helper_.get(),
599 context_group ? context_group->GetImplementation()->share_group() : NULL, 686 context_group ? context_group->GetImplementation()->share_group() : NULL,
600 transfer_buffer_.get(), 687 transfer_buffer_.get(),
601 true, 688 true,
602 false)); 689 false,
690 image_factory_.get()));
603 691
604 if (!gles2_implementation_->Initialize( 692 if (!gles2_implementation_->Initialize(
605 kStartTransferBufferSize, 693 kStartTransferBufferSize,
606 kMinTransferBufferSize, 694 kMinTransferBufferSize,
607 kMaxTransferBufferSize)) { 695 kMaxTransferBufferSize)) {
608 return false; 696 return false;
609 } 697 }
610 698
611 if (share_resources_) { 699 if (share_resources_) {
612 AutoLockAndDecoderDetachThread lock(g_decoder_lock.Get(), 700 AutoLockAndDecoderDetachThread lock(g_decoder_lock.Get(),
(...skipping 476 matching lines...) Expand 10 before | Expand all | Expand 10 after
1089 return gl_->glname(a1, a2); \ 1177 return gl_->glname(a1, a2); \
1090 } 1178 }
1091 1179
1092 #define DELEGATE_TO_GL_3(name, glname, t1, t2, t3) \ 1180 #define DELEGATE_TO_GL_3(name, glname, t1, t2, t3) \
1093 void WebGraphicsContext3DInProcessCommandBufferImpl::name( \ 1181 void WebGraphicsContext3DInProcessCommandBufferImpl::name( \
1094 t1 a1, t2 a2, t3 a3) { \ 1182 t1 a1, t2 a2, t3 a3) { \
1095 ClearContext(); \ 1183 ClearContext(); \
1096 gl_->glname(a1, a2, a3); \ 1184 gl_->glname(a1, a2, a3); \
1097 } 1185 }
1098 1186
1187 #define DELEGATE_TO_GL_3R(name, glname, t1, t2, t3, rt) \
1188 rt WebGraphicsContext3DInProcessCommandBufferImpl::name( \
1189 t1 a1, t2 a2, t3 a3) { \
1190 ClearContext(); \
1191 return gl_->glname(a1, a2, a3); \
1192 }
1193
1099 #define DELEGATE_TO_GL_4(name, glname, t1, t2, t3, t4) \ 1194 #define DELEGATE_TO_GL_4(name, glname, t1, t2, t3, t4) \
1100 void WebGraphicsContext3DInProcessCommandBufferImpl::name( \ 1195 void WebGraphicsContext3DInProcessCommandBufferImpl::name( \
1101 t1 a1, t2 a2, t3 a3, t4 a4) { \ 1196 t1 a1, t2 a2, t3 a3, t4 a4) { \
1102 ClearContext(); \ 1197 ClearContext(); \
1103 gl_->glname(a1, a2, a3, a4); \ 1198 gl_->glname(a1, a2, a3, a4); \
1104 } 1199 }
1105 1200
1106 #define DELEGATE_TO_GL_5(name, glname, t1, t2, t3, t4, t5) \ 1201 #define DELEGATE_TO_GL_5(name, glname, t1, t2, t3, t4, t5) \
1107 void WebGraphicsContext3DInProcessCommandBufferImpl::name( \ 1202 void WebGraphicsContext3DInProcessCommandBufferImpl::name( \
1108 t1 a1, t2 a2, t3 a3, t4 a4, t5 a5) { \ 1203 t1 a1, t2 a2, t3 a3, t4 a4, t5 a5) { \
(...skipping 713 matching lines...) Expand 10 before | Expand all | Expand 10 after
1822 } 1917 }
1823 1918
1824 void WebGraphicsContext3DInProcessCommandBufferImpl::OnContextLost() { 1919 void WebGraphicsContext3DInProcessCommandBufferImpl::OnContextLost() {
1825 // TODO(kbr): improve the precision here. 1920 // TODO(kbr): improve the precision here.
1826 context_lost_reason_ = GL_UNKNOWN_CONTEXT_RESET_ARB; 1921 context_lost_reason_ = GL_UNKNOWN_CONTEXT_RESET_ARB;
1827 if (context_lost_callback_) { 1922 if (context_lost_callback_) {
1828 context_lost_callback_->onContextLost(); 1923 context_lost_callback_->onContextLost();
1829 } 1924 }
1830 } 1925 }
1831 1926
1927 DELEGATE_TO_GL_3R(createImageCHROMIUM, CreateImageCHROMIUM,
1928 WGC3Dsizei, WGC3Dsizei, WGC3Denum, WGC3Duint);
1929
1930 DELEGATE_TO_GL_1(destroyImageCHROMIUM, DestroyImageCHROMIUM, WGC3Duint);
1931
1932 DELEGATE_TO_GL_3(getImageParameterivCHROMIUM, GetImageParameterivCHROMIUM,
1933 WGC3Duint, WGC3Denum, GLint*);
1934
1935 DELEGATE_TO_GL_2R(mapImageCHROMIUM, MapImageCHROMIUM,
1936 WGC3Duint, WGC3Denum, void*);
1937
1938 DELEGATE_TO_GL_1(unmapImageCHROMIUM, UnmapImageCHROMIUM, WGC3Duint);
1939
1832 DELEGATE_TO_GL_3(bindUniformLocationCHROMIUM, BindUniformLocationCHROMIUM, 1940 DELEGATE_TO_GL_3(bindUniformLocationCHROMIUM, BindUniformLocationCHROMIUM,
1833 WebGLId, WGC3Dint, const WGC3Dchar*) 1941 WebGLId, WGC3Dint, const WGC3Dchar*)
1834 1942
1835 DELEGATE_TO_GL(shallowFlushCHROMIUM, ShallowFlushCHROMIUM) 1943 DELEGATE_TO_GL(shallowFlushCHROMIUM, ShallowFlushCHROMIUM)
1836 1944
1837 DELEGATE_TO_GL_1(genMailboxCHROMIUM, GenMailboxCHROMIUM, WGC3Dbyte*) 1945 DELEGATE_TO_GL_1(genMailboxCHROMIUM, GenMailboxCHROMIUM, WGC3Dbyte*)
1838 DELEGATE_TO_GL_2(produceTextureCHROMIUM, ProduceTextureCHROMIUM, 1946 DELEGATE_TO_GL_2(produceTextureCHROMIUM, ProduceTextureCHROMIUM,
1839 WGC3Denum, const WGC3Dbyte*) 1947 WGC3Denum, const WGC3Dbyte*)
1840 DELEGATE_TO_GL_2(consumeTextureCHROMIUM, ConsumeTextureCHROMIUM, 1948 DELEGATE_TO_GL_2(consumeTextureCHROMIUM, ConsumeTextureCHROMIUM,
1841 WGC3Denum, const WGC3Dbyte*) 1949 WGC3Denum, const WGC3Dbyte*)
(...skipping 26 matching lines...) Expand all
1868 1976
1869 DELEGATE_TO_GL_9(asyncTexSubImage2DCHROMIUM, AsyncTexSubImage2DCHROMIUM, 1977 DELEGATE_TO_GL_9(asyncTexSubImage2DCHROMIUM, AsyncTexSubImage2DCHROMIUM,
1870 WGC3Denum, WGC3Dint, WGC3Dint, WGC3Dint, WGC3Dsizei, WGC3Dsizei, 1978 WGC3Denum, WGC3Dint, WGC3Dint, WGC3Dint, WGC3Dsizei, WGC3Dsizei,
1871 WGC3Denum, WGC3Denum, const void*) 1979 WGC3Denum, WGC3Denum, const void*)
1872 1980
1873 DELEGATE_TO_GL_1(waitAsyncTexImage2DCHROMIUM, WaitAsyncTexImage2DCHROMIUM, 1981 DELEGATE_TO_GL_1(waitAsyncTexImage2DCHROMIUM, WaitAsyncTexImage2DCHROMIUM,
1874 WGC3Denum) 1982 WGC3Denum)
1875 1983
1876 } // namespace gpu 1984 } // namespace gpu
1877 } // namespace webkit 1985 } // namespace webkit
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698