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

Side by Side Diff: gpu/command_buffer/service/gles2_cmd_decoder.cc

Issue 1859703002: convert //gpu to std::unique_ptr (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase on master Created 4 years, 8 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 "gpu/command_buffer/service/gles2_cmd_decoder.h" 5 #include "gpu/command_buffer/service/gles2_cmd_decoder.h"
6 6
7 #include <limits.h> 7 #include <limits.h>
8 #include <stddef.h> 8 #include <stddef.h>
9 #include <stdint.h> 9 #include <stdint.h>
10 #include <stdio.h> 10 #include <stdio.h>
11 11
12 #include <algorithm> 12 #include <algorithm>
13 #include <cmath> 13 #include <cmath>
14 #include <list> 14 #include <list>
15 #include <map> 15 #include <map>
16 #include <memory>
16 #include <queue> 17 #include <queue>
17 18
18 #include "base/callback.h" 19 #include "base/callback.h"
19 #include "base/callback_helpers.h" 20 #include "base/callback_helpers.h"
20 #include "base/logging.h" 21 #include "base/logging.h"
21 #include "base/memory/linked_ptr.h" 22 #include "base/memory/linked_ptr.h"
22 #include "base/memory/scoped_ptr.h"
23 #include "base/metrics/histogram_macros.h" 23 #include "base/metrics/histogram_macros.h"
24 #include "base/numerics/safe_math.h" 24 #include "base/numerics/safe_math.h"
25 #include "base/strings/string_number_conversions.h" 25 #include "base/strings/string_number_conversions.h"
26 #include "base/trace_event/trace_event.h" 26 #include "base/trace_event/trace_event.h"
27 #include "base/trace_event/trace_event_synthetic_delay.h" 27 #include "base/trace_event/trace_event_synthetic_delay.h"
28 #include "build/build_config.h" 28 #include "build/build_config.h"
29 #include "gpu/command_buffer/common/debug_marker_manager.h" 29 #include "gpu/command_buffer/common/debug_marker_manager.h"
30 #include "gpu/command_buffer/common/gles2_cmd_format.h" 30 #include "gpu/command_buffer/common/gles2_cmd_format.h"
31 #include "gpu/command_buffer/common/gles2_cmd_utils.h" 31 #include "gpu/command_buffer/common/gles2_cmd_utils.h"
32 #include "gpu/command_buffer/common/mailbox.h" 32 #include "gpu/command_buffer/common/mailbox.h"
(...skipping 361 matching lines...) Expand 10 before | Expand all | Expand 10 after
394 // framebuffer are restored. 394 // framebuffer are restored.
395 class ScopedFrameBufferReadPixelHelper { 395 class ScopedFrameBufferReadPixelHelper {
396 public: 396 public:
397 ScopedFrameBufferReadPixelHelper(ContextState* state, 397 ScopedFrameBufferReadPixelHelper(ContextState* state,
398 GLES2DecoderImpl* decoder); 398 GLES2DecoderImpl* decoder);
399 ~ScopedFrameBufferReadPixelHelper(); 399 ~ScopedFrameBufferReadPixelHelper();
400 400
401 private: 401 private:
402 GLuint temp_texture_id_ = 0; 402 GLuint temp_texture_id_ = 0;
403 GLuint temp_fbo_id_ = 0; 403 GLuint temp_fbo_id_ = 0;
404 scoped_ptr<ScopedFrameBufferBinder> fbo_binder_; 404 std::unique_ptr<ScopedFrameBufferBinder> fbo_binder_;
405 DISALLOW_COPY_AND_ASSIGN(ScopedFrameBufferReadPixelHelper); 405 DISALLOW_COPY_AND_ASSIGN(ScopedFrameBufferReadPixelHelper);
406 }; 406 };
407 407
408 // Encapsulates an OpenGL texture. 408 // Encapsulates an OpenGL texture.
409 class BackTexture { 409 class BackTexture {
410 public: 410 public:
411 explicit BackTexture(MemoryTracker* memory_tracker, ContextState* state); 411 explicit BackTexture(MemoryTracker* memory_tracker, ContextState* state);
412 ~BackTexture(); 412 ~BackTexture();
413 413
414 // Create a new render texture. 414 // Create a new render texture.
(...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after
520 GLuint id_; 520 GLuint id_;
521 DISALLOW_COPY_AND_ASSIGN(BackFramebuffer); 521 DISALLOW_COPY_AND_ASSIGN(BackFramebuffer);
522 }; 522 };
523 523
524 struct FenceCallback { 524 struct FenceCallback {
525 FenceCallback() 525 FenceCallback()
526 : fence(gfx::GLFence::Create()) { 526 : fence(gfx::GLFence::Create()) {
527 DCHECK(fence); 527 DCHECK(fence);
528 } 528 }
529 std::vector<base::Closure> callbacks; 529 std::vector<base::Closure> callbacks;
530 scoped_ptr<gfx::GLFence> fence; 530 std::unique_ptr<gfx::GLFence> fence;
531 }; 531 };
532 532
533 // } // anonymous namespace. 533 // } // anonymous namespace.
534 534
535 // static 535 // static
536 const unsigned int GLES2Decoder::kDefaultStencilMask = 536 const unsigned int GLES2Decoder::kDefaultStencilMask =
537 static_cast<unsigned int>(-1); 537 static_cast<unsigned int>(-1);
538 538
539 bool GLES2Decoder::GetServiceTextureId(uint32_t client_texture_id, 539 bool GLES2Decoder::GetServiceTextureId(uint32_t client_texture_id,
540 uint32_t* service_texture_id) { 540 uint32_t* service_texture_id) {
(...skipping 1468 matching lines...) Expand 10 before | Expand all | Expand 10 after
2009 // The buffer used to simulate GL_FIXED attribs. 2009 // The buffer used to simulate GL_FIXED attribs.
2010 GLuint fixed_attrib_buffer_id_; 2010 GLuint fixed_attrib_buffer_id_;
2011 2011
2012 // The size of fiixed attrib buffer. 2012 // The size of fiixed attrib buffer.
2013 GLsizei fixed_attrib_buffer_size_; 2013 GLsizei fixed_attrib_buffer_size_;
2014 2014
2015 // The offscreen frame buffer that the client renders to. With EGL, the 2015 // The offscreen frame buffer that the client renders to. With EGL, the
2016 // depth and stencil buffers are separate. With regular GL there is a single 2016 // depth and stencil buffers are separate. With regular GL there is a single
2017 // packed depth stencil buffer in offscreen_target_depth_render_buffer_. 2017 // packed depth stencil buffer in offscreen_target_depth_render_buffer_.
2018 // offscreen_target_stencil_render_buffer_ is unused. 2018 // offscreen_target_stencil_render_buffer_ is unused.
2019 scoped_ptr<BackFramebuffer> offscreen_target_frame_buffer_; 2019 std::unique_ptr<BackFramebuffer> offscreen_target_frame_buffer_;
2020 scoped_ptr<BackTexture> offscreen_target_color_texture_; 2020 std::unique_ptr<BackTexture> offscreen_target_color_texture_;
2021 scoped_ptr<BackRenderbuffer> offscreen_target_color_render_buffer_; 2021 std::unique_ptr<BackRenderbuffer> offscreen_target_color_render_buffer_;
2022 scoped_ptr<BackRenderbuffer> offscreen_target_depth_render_buffer_; 2022 std::unique_ptr<BackRenderbuffer> offscreen_target_depth_render_buffer_;
2023 scoped_ptr<BackRenderbuffer> offscreen_target_stencil_render_buffer_; 2023 std::unique_ptr<BackRenderbuffer> offscreen_target_stencil_render_buffer_;
2024 GLenum offscreen_target_color_format_; 2024 GLenum offscreen_target_color_format_;
2025 GLenum offscreen_target_depth_format_; 2025 GLenum offscreen_target_depth_format_;
2026 GLenum offscreen_target_stencil_format_; 2026 GLenum offscreen_target_stencil_format_;
2027 GLsizei offscreen_target_samples_; 2027 GLsizei offscreen_target_samples_;
2028 GLboolean offscreen_target_buffer_preserved_; 2028 GLboolean offscreen_target_buffer_preserved_;
2029 2029
2030 // The copy that is saved when SwapBuffers is called. 2030 // The copy that is saved when SwapBuffers is called.
2031 scoped_ptr<BackFramebuffer> offscreen_saved_frame_buffer_; 2031 std::unique_ptr<BackFramebuffer> offscreen_saved_frame_buffer_;
2032 scoped_ptr<BackTexture> offscreen_saved_color_texture_; 2032 std::unique_ptr<BackTexture> offscreen_saved_color_texture_;
2033 scoped_refptr<TextureRef> 2033 scoped_refptr<TextureRef>
2034 offscreen_saved_color_texture_info_; 2034 offscreen_saved_color_texture_info_;
2035 2035
2036 // The copy that is used as the destination for multi-sample resolves. 2036 // The copy that is used as the destination for multi-sample resolves.
2037 scoped_ptr<BackFramebuffer> offscreen_resolved_frame_buffer_; 2037 std::unique_ptr<BackFramebuffer> offscreen_resolved_frame_buffer_;
2038 scoped_ptr<BackTexture> offscreen_resolved_color_texture_; 2038 std::unique_ptr<BackTexture> offscreen_resolved_color_texture_;
2039 GLenum offscreen_saved_color_format_; 2039 GLenum offscreen_saved_color_format_;
2040 2040
2041 scoped_ptr<QueryManager> query_manager_; 2041 std::unique_ptr<QueryManager> query_manager_;
2042 2042
2043 scoped_ptr<VertexArrayManager> vertex_array_manager_; 2043 std::unique_ptr<VertexArrayManager> vertex_array_manager_;
2044 2044
2045 scoped_ptr<ImageManager> image_manager_; 2045 std::unique_ptr<ImageManager> image_manager_;
2046 2046
2047 FenceSyncReleaseCallback fence_sync_release_callback_; 2047 FenceSyncReleaseCallback fence_sync_release_callback_;
2048 WaitFenceSyncCallback wait_fence_sync_callback_; 2048 WaitFenceSyncCallback wait_fence_sync_callback_;
2049 2049
2050 ShaderCacheCallback shader_cache_callback_; 2050 ShaderCacheCallback shader_cache_callback_;
2051 2051
2052 // The format of the back buffer_ 2052 // The format of the back buffer_
2053 GLenum back_buffer_color_format_; 2053 GLenum back_buffer_color_format_;
2054 bool back_buffer_has_depth_; 2054 bool back_buffer_has_depth_;
2055 bool back_buffer_has_stencil_; 2055 bool back_buffer_has_stencil_;
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
2111 bool lose_context_when_out_of_memory_; 2111 bool lose_context_when_out_of_memory_;
2112 2112
2113 // Log extra info. 2113 // Log extra info.
2114 bool service_logging_; 2114 bool service_logging_;
2115 2115
2116 #if defined(OS_MACOSX) 2116 #if defined(OS_MACOSX)
2117 typedef std::map<GLuint, IOSurfaceRef> TextureToIOSurfaceMap; 2117 typedef std::map<GLuint, IOSurfaceRef> TextureToIOSurfaceMap;
2118 TextureToIOSurfaceMap texture_to_io_surface_map_; 2118 TextureToIOSurfaceMap texture_to_io_surface_map_;
2119 #endif 2119 #endif
2120 2120
2121 scoped_ptr<CopyTextureCHROMIUMResourceManager> copy_texture_CHROMIUM_; 2121 std::unique_ptr<CopyTextureCHROMIUMResourceManager> copy_texture_CHROMIUM_;
2122 scoped_ptr<ClearFramebufferResourceManager> clear_framebuffer_blit_; 2122 std::unique_ptr<ClearFramebufferResourceManager> clear_framebuffer_blit_;
2123 2123
2124 // Cached values of the currently assigned viewport dimensions. 2124 // Cached values of the currently assigned viewport dimensions.
2125 GLsizei viewport_max_width_; 2125 GLsizei viewport_max_width_;
2126 GLsizei viewport_max_height_; 2126 GLsizei viewport_max_height_;
2127 2127
2128 // Command buffer stats. 2128 // Command buffer stats.
2129 base::TimeDelta total_processing_commands_time_; 2129 base::TimeDelta total_processing_commands_time_;
2130 2130
2131 // States related to each manager. 2131 // States related to each manager.
2132 DecoderTextureState texture_state_; 2132 DecoderTextureState texture_state_;
2133 DecoderFramebufferState framebuffer_state_; 2133 DecoderFramebufferState framebuffer_state_;
2134 2134
2135 scoped_ptr<GPUTracer> gpu_tracer_; 2135 std::unique_ptr<GPUTracer> gpu_tracer_;
2136 scoped_ptr<GPUStateTracer> gpu_state_tracer_; 2136 std::unique_ptr<GPUStateTracer> gpu_state_tracer_;
2137 const unsigned char* gpu_decoder_category_; 2137 const unsigned char* gpu_decoder_category_;
2138 int gpu_trace_level_; 2138 int gpu_trace_level_;
2139 bool gpu_trace_commands_; 2139 bool gpu_trace_commands_;
2140 bool gpu_debug_commands_; 2140 bool gpu_debug_commands_;
2141 2141
2142 std::queue<linked_ptr<FenceCallback> > pending_readpixel_fences_; 2142 std::queue<linked_ptr<FenceCallback> > pending_readpixel_fences_;
2143 2143
2144 // Used to validate multisample renderbuffers if needed 2144 // Used to validate multisample renderbuffers if needed
2145 GLuint validation_texture_; 2145 GLuint validation_texture_;
2146 GLuint validation_fbo_multisample_; 2146 GLuint validation_fbo_multisample_;
(...skipping 268 matching lines...) Expand 10 before | Expand all | Expand 10 after
2415 ScopedTextureBinder binder(state_, id_, GL_TEXTURE_2D); 2415 ScopedTextureBinder binder(state_, id_, GL_TEXTURE_2D);
2416 uint32_t image_size = 0; 2416 uint32_t image_size = 0;
2417 GLES2Util::ComputeImageDataSizes( 2417 GLES2Util::ComputeImageDataSizes(
2418 size.width(), size.height(), 1, format, GL_UNSIGNED_BYTE, 8, &image_size, 2418 size.width(), size.height(), 1, format, GL_UNSIGNED_BYTE, 8, &image_size,
2419 NULL, NULL); 2419 NULL, NULL);
2420 2420
2421 if (!memory_tracker_.EnsureGPUMemoryAvailable(image_size)) { 2421 if (!memory_tracker_.EnsureGPUMemoryAvailable(image_size)) {
2422 return false; 2422 return false;
2423 } 2423 }
2424 2424
2425 scoped_ptr<char[]> zero_data; 2425 std::unique_ptr<char[]> zero_data;
2426 if (zero) { 2426 if (zero) {
2427 zero_data.reset(new char[image_size]); 2427 zero_data.reset(new char[image_size]);
2428 memset(zero_data.get(), 0, image_size); 2428 memset(zero_data.get(), 0, image_size);
2429 } 2429 }
2430 2430
2431 glTexImage2D(GL_TEXTURE_2D, 2431 glTexImage2D(GL_TEXTURE_2D,
2432 0, // mip level 2432 0, // mip level
2433 format, 2433 format,
2434 size.width(), 2434 size.width(),
2435 size.height(), 2435 size.height(),
(...skipping 1004 matching lines...) Expand 10 before | Expand all | Expand 10 after
3440 } 3440 }
3441 return true; 3441 return true;
3442 } 3442 }
3443 3443
3444 bool GLES2DecoderImpl::GenBuffersHelper(GLsizei n, const GLuint* client_ids) { 3444 bool GLES2DecoderImpl::GenBuffersHelper(GLsizei n, const GLuint* client_ids) {
3445 for (GLsizei ii = 0; ii < n; ++ii) { 3445 for (GLsizei ii = 0; ii < n; ++ii) {
3446 if (GetBuffer(client_ids[ii])) { 3446 if (GetBuffer(client_ids[ii])) {
3447 return false; 3447 return false;
3448 } 3448 }
3449 } 3449 }
3450 scoped_ptr<GLuint[]> service_ids(new GLuint[n]); 3450 std::unique_ptr<GLuint[]> service_ids(new GLuint[n]);
3451 glGenBuffersARB(n, service_ids.get()); 3451 glGenBuffersARB(n, service_ids.get());
3452 for (GLsizei ii = 0; ii < n; ++ii) { 3452 for (GLsizei ii = 0; ii < n; ++ii) {
3453 CreateBuffer(client_ids[ii], service_ids[ii]); 3453 CreateBuffer(client_ids[ii], service_ids[ii]);
3454 } 3454 }
3455 return true; 3455 return true;
3456 } 3456 }
3457 3457
3458 bool GLES2DecoderImpl::GenFramebuffersHelper( 3458 bool GLES2DecoderImpl::GenFramebuffersHelper(
3459 GLsizei n, const GLuint* client_ids) { 3459 GLsizei n, const GLuint* client_ids) {
3460 for (GLsizei ii = 0; ii < n; ++ii) { 3460 for (GLsizei ii = 0; ii < n; ++ii) {
3461 if (GetFramebuffer(client_ids[ii])) { 3461 if (GetFramebuffer(client_ids[ii])) {
3462 return false; 3462 return false;
3463 } 3463 }
3464 } 3464 }
3465 scoped_ptr<GLuint[]> service_ids(new GLuint[n]); 3465 std::unique_ptr<GLuint[]> service_ids(new GLuint[n]);
3466 glGenFramebuffersEXT(n, service_ids.get()); 3466 glGenFramebuffersEXT(n, service_ids.get());
3467 for (GLsizei ii = 0; ii < n; ++ii) { 3467 for (GLsizei ii = 0; ii < n; ++ii) {
3468 CreateFramebuffer(client_ids[ii], service_ids[ii]); 3468 CreateFramebuffer(client_ids[ii], service_ids[ii]);
3469 } 3469 }
3470 return true; 3470 return true;
3471 } 3471 }
3472 3472
3473 bool GLES2DecoderImpl::GenRenderbuffersHelper( 3473 bool GLES2DecoderImpl::GenRenderbuffersHelper(
3474 GLsizei n, const GLuint* client_ids) { 3474 GLsizei n, const GLuint* client_ids) {
3475 for (GLsizei ii = 0; ii < n; ++ii) { 3475 for (GLsizei ii = 0; ii < n; ++ii) {
3476 if (GetRenderbuffer(client_ids[ii])) { 3476 if (GetRenderbuffer(client_ids[ii])) {
3477 return false; 3477 return false;
3478 } 3478 }
3479 } 3479 }
3480 scoped_ptr<GLuint[]> service_ids(new GLuint[n]); 3480 std::unique_ptr<GLuint[]> service_ids(new GLuint[n]);
3481 glGenRenderbuffersEXT(n, service_ids.get()); 3481 glGenRenderbuffersEXT(n, service_ids.get());
3482 for (GLsizei ii = 0; ii < n; ++ii) { 3482 for (GLsizei ii = 0; ii < n; ++ii) {
3483 CreateRenderbuffer(client_ids[ii], service_ids[ii]); 3483 CreateRenderbuffer(client_ids[ii], service_ids[ii]);
3484 } 3484 }
3485 return true; 3485 return true;
3486 } 3486 }
3487 3487
3488 bool GLES2DecoderImpl::GenValuebuffersCHROMIUMHelper(GLsizei n, 3488 bool GLES2DecoderImpl::GenValuebuffersCHROMIUMHelper(GLsizei n,
3489 const GLuint* client_ids) { 3489 const GLuint* client_ids) {
3490 for (GLsizei ii = 0; ii < n; ++ii) { 3490 for (GLsizei ii = 0; ii < n; ++ii) {
3491 if (GetValuebuffer(client_ids[ii])) { 3491 if (GetValuebuffer(client_ids[ii])) {
3492 return false; 3492 return false;
3493 } 3493 }
3494 } 3494 }
3495 for (GLsizei ii = 0; ii < n; ++ii) { 3495 for (GLsizei ii = 0; ii < n; ++ii) {
3496 CreateValuebuffer(client_ids[ii]); 3496 CreateValuebuffer(client_ids[ii]);
3497 } 3497 }
3498 return true; 3498 return true;
3499 } 3499 }
3500 3500
3501 bool GLES2DecoderImpl::GenTexturesHelper(GLsizei n, const GLuint* client_ids) { 3501 bool GLES2DecoderImpl::GenTexturesHelper(GLsizei n, const GLuint* client_ids) {
3502 for (GLsizei ii = 0; ii < n; ++ii) { 3502 for (GLsizei ii = 0; ii < n; ++ii) {
3503 if (GetTexture(client_ids[ii])) { 3503 if (GetTexture(client_ids[ii])) {
3504 return false; 3504 return false;
3505 } 3505 }
3506 } 3506 }
3507 scoped_ptr<GLuint[]> service_ids(new GLuint[n]); 3507 std::unique_ptr<GLuint[]> service_ids(new GLuint[n]);
3508 glGenTextures(n, service_ids.get()); 3508 glGenTextures(n, service_ids.get());
3509 for (GLsizei ii = 0; ii < n; ++ii) { 3509 for (GLsizei ii = 0; ii < n; ++ii) {
3510 CreateTexture(client_ids[ii], service_ids[ii]); 3510 CreateTexture(client_ids[ii], service_ids[ii]);
3511 } 3511 }
3512 return true; 3512 return true;
3513 } 3513 }
3514 3514
3515 bool GLES2DecoderImpl::GenSamplersHelper(GLsizei n, const GLuint* client_ids) { 3515 bool GLES2DecoderImpl::GenSamplersHelper(GLsizei n, const GLuint* client_ids) {
3516 for (GLsizei ii = 0; ii < n; ++ii) { 3516 for (GLsizei ii = 0; ii < n; ++ii) {
3517 if (GetSampler(client_ids[ii])) { 3517 if (GetSampler(client_ids[ii])) {
3518 return false; 3518 return false;
3519 } 3519 }
3520 } 3520 }
3521 scoped_ptr<GLuint[]> service_ids(new GLuint[n]); 3521 std::unique_ptr<GLuint[]> service_ids(new GLuint[n]);
3522 glGenSamplers(n, service_ids.get()); 3522 glGenSamplers(n, service_ids.get());
3523 for (GLsizei ii = 0; ii < n; ++ii) { 3523 for (GLsizei ii = 0; ii < n; ++ii) {
3524 CreateSampler(client_ids[ii], service_ids[ii]); 3524 CreateSampler(client_ids[ii], service_ids[ii]);
3525 } 3525 }
3526 return true; 3526 return true;
3527 } 3527 }
3528 3528
3529 bool GLES2DecoderImpl::GenPathsCHROMIUMHelper(GLuint first_client_id, 3529 bool GLES2DecoderImpl::GenPathsCHROMIUMHelper(GLuint first_client_id,
3530 GLsizei range) { 3530 GLsizei range) {
3531 GLuint last_client_id; 3531 GLuint last_client_id;
(...skipping 1572 matching lines...) Expand 10 before | Expand all | Expand 10 after
5104 } 5104 }
5105 5105
5106 if (width < 0 || height < 0) { 5106 if (width < 0 || height < 0) {
5107 LOCAL_SET_GL_ERROR(GL_INVALID_VALUE, function_name, "negative size"); 5107 LOCAL_SET_GL_ERROR(GL_INVALID_VALUE, function_name, "negative size");
5108 return; 5108 return;
5109 } 5109 }
5110 5110
5111 // If the default framebuffer is bound but we are still rendering to an 5111 // If the default framebuffer is bound but we are still rendering to an
5112 // FBO, translate attachment names that refer to default framebuffer 5112 // FBO, translate attachment names that refer to default framebuffer
5113 // channels to corresponding framebuffer attachments. 5113 // channels to corresponding framebuffer attachments.
5114 scoped_ptr<GLenum[]> translated_attachments(new GLenum[count]); 5114 std::unique_ptr<GLenum[]> translated_attachments(new GLenum[count]);
5115 for (GLsizei i = 0; i < count; ++i) { 5115 for (GLsizei i = 0; i < count; ++i) {
5116 GLenum attachment = attachments[i]; 5116 GLenum attachment = attachments[i];
5117 if (!framebuffer && GetBackbufferServiceId()) { 5117 if (!framebuffer && GetBackbufferServiceId()) {
5118 switch (attachment) { 5118 switch (attachment) {
5119 case GL_COLOR_EXT: 5119 case GL_COLOR_EXT:
5120 attachment = GL_COLOR_ATTACHMENT0; 5120 attachment = GL_COLOR_ATTACHMENT0;
5121 break; 5121 break;
5122 case GL_DEPTH_EXT: 5122 case GL_DEPTH_EXT:
5123 attachment = GL_DEPTH_ATTACHMENT; 5123 attachment = GL_DEPTH_ATTACHMENT;
5124 break; 5124 break;
(...skipping 663 matching lines...) Expand 10 before | Expand all | Expand 10 after
5788 feature_info_->gl_version_info().is_desktop_core_profile) { 5788 feature_info_->gl_version_info().is_desktop_core_profile) {
5789 return GL_POINT_SIZE_RANGE; 5789 return GL_POINT_SIZE_RANGE;
5790 } 5790 }
5791 return pname; 5791 return pname;
5792 } 5792 }
5793 5793
5794 void GLES2DecoderImpl::DoGetBooleanv(GLenum pname, GLboolean* params) { 5794 void GLES2DecoderImpl::DoGetBooleanv(GLenum pname, GLboolean* params) {
5795 DCHECK(params); 5795 DCHECK(params);
5796 GLsizei num_written = 0; 5796 GLsizei num_written = 0;
5797 if (GetNumValuesReturnedForGLGet(pname, &num_written)) { 5797 if (GetNumValuesReturnedForGLGet(pname, &num_written)) {
5798 scoped_ptr<GLint[]> values(new GLint[num_written]); 5798 std::unique_ptr<GLint[]> values(new GLint[num_written]);
5799 if (!state_.GetStateAsGLint(pname, values.get(), &num_written)) { 5799 if (!state_.GetStateAsGLint(pname, values.get(), &num_written)) {
5800 GetHelper(pname, values.get(), &num_written); 5800 GetHelper(pname, values.get(), &num_written);
5801 } 5801 }
5802 for (GLsizei ii = 0; ii < num_written; ++ii) { 5802 for (GLsizei ii = 0; ii < num_written; ++ii) {
5803 params[ii] = static_cast<GLboolean>(values[ii]); 5803 params[ii] = static_cast<GLboolean>(values[ii]);
5804 } 5804 }
5805 } else { 5805 } else {
5806 pname = AdjustGetPname(pname); 5806 pname = AdjustGetPname(pname);
5807 glGetBooleanv(pname, params); 5807 glGetBooleanv(pname, params);
5808 } 5808 }
5809 } 5809 }
5810 5810
5811 void GLES2DecoderImpl::DoGetFloatv(GLenum pname, GLfloat* params) { 5811 void GLES2DecoderImpl::DoGetFloatv(GLenum pname, GLfloat* params) {
5812 DCHECK(params); 5812 DCHECK(params);
5813 GLsizei num_written = 0; 5813 GLsizei num_written = 0;
5814 if (!state_.GetStateAsGLfloat(pname, params, &num_written)) { 5814 if (!state_.GetStateAsGLfloat(pname, params, &num_written)) {
5815 if (GetHelper(pname, NULL, &num_written)) { 5815 if (GetHelper(pname, NULL, &num_written)) {
5816 scoped_ptr<GLint[]> values(new GLint[num_written]); 5816 std::unique_ptr<GLint[]> values(new GLint[num_written]);
5817 GetHelper(pname, values.get(), &num_written); 5817 GetHelper(pname, values.get(), &num_written);
5818 for (GLsizei ii = 0; ii < num_written; ++ii) { 5818 for (GLsizei ii = 0; ii < num_written; ++ii) {
5819 params[ii] = static_cast<GLfloat>(values[ii]); 5819 params[ii] = static_cast<GLfloat>(values[ii]);
5820 } 5820 }
5821 } else { 5821 } else {
5822 pname = AdjustGetPname(pname); 5822 pname = AdjustGetPname(pname);
5823 glGetFloatv(pname, params); 5823 glGetFloatv(pname, params);
5824 } 5824 }
5825 } 5825 }
5826 } 5826 }
(...skipping 1643 matching lines...) Expand 10 before | Expand all | Expand 10 after
7470 GLint real_location = -1; 7470 GLint real_location = -1;
7471 if (!PrepForSetUniformByLocation(fake_location, 7471 if (!PrepForSetUniformByLocation(fake_location,
7472 "glUniform1fv", 7472 "glUniform1fv",
7473 Program::kUniform1f, 7473 Program::kUniform1f,
7474 &real_location, 7474 &real_location,
7475 &type, 7475 &type,
7476 &count)) { 7476 &count)) {
7477 return; 7477 return;
7478 } 7478 }
7479 if (type == GL_BOOL) { 7479 if (type == GL_BOOL) {
7480 scoped_ptr<GLint[]> temp(new GLint[count]); 7480 std::unique_ptr<GLint[]> temp(new GLint[count]);
7481 for (GLsizei ii = 0; ii < count; ++ii) { 7481 for (GLsizei ii = 0; ii < count; ++ii) {
7482 temp[ii] = static_cast<GLint>(value[ii] != 0.0f); 7482 temp[ii] = static_cast<GLint>(value[ii] != 0.0f);
7483 } 7483 }
7484 glUniform1iv(real_location, count, temp.get()); 7484 glUniform1iv(real_location, count, temp.get());
7485 } else { 7485 } else {
7486 glUniform1fv(real_location, count, value); 7486 glUniform1fv(real_location, count, value);
7487 } 7487 }
7488 } 7488 }
7489 7489
7490 void GLES2DecoderImpl::DoUniform2fv( 7490 void GLES2DecoderImpl::DoUniform2fv(
7491 GLint fake_location, GLsizei count, const GLfloat* value) { 7491 GLint fake_location, GLsizei count, const GLfloat* value) {
7492 GLenum type = 0; 7492 GLenum type = 0;
7493 GLint real_location = -1; 7493 GLint real_location = -1;
7494 if (!PrepForSetUniformByLocation(fake_location, 7494 if (!PrepForSetUniformByLocation(fake_location,
7495 "glUniform2fv", 7495 "glUniform2fv",
7496 Program::kUniform2f, 7496 Program::kUniform2f,
7497 &real_location, 7497 &real_location,
7498 &type, 7498 &type,
7499 &count)) { 7499 &count)) {
7500 return; 7500 return;
7501 } 7501 }
7502 if (type == GL_BOOL_VEC2) { 7502 if (type == GL_BOOL_VEC2) {
7503 GLsizei num_values = count * 2; 7503 GLsizei num_values = count * 2;
7504 scoped_ptr<GLint[]> temp(new GLint[num_values]); 7504 std::unique_ptr<GLint[]> temp(new GLint[num_values]);
7505 for (GLsizei ii = 0; ii < num_values; ++ii) { 7505 for (GLsizei ii = 0; ii < num_values; ++ii) {
7506 temp[ii] = static_cast<GLint>(value[ii] != 0.0f); 7506 temp[ii] = static_cast<GLint>(value[ii] != 0.0f);
7507 } 7507 }
7508 glUniform2iv(real_location, count, temp.get()); 7508 glUniform2iv(real_location, count, temp.get());
7509 } else { 7509 } else {
7510 glUniform2fv(real_location, count, value); 7510 glUniform2fv(real_location, count, value);
7511 } 7511 }
7512 } 7512 }
7513 7513
7514 void GLES2DecoderImpl::DoUniform3fv( 7514 void GLES2DecoderImpl::DoUniform3fv(
7515 GLint fake_location, GLsizei count, const GLfloat* value) { 7515 GLint fake_location, GLsizei count, const GLfloat* value) {
7516 GLenum type = 0; 7516 GLenum type = 0;
7517 GLint real_location = -1; 7517 GLint real_location = -1;
7518 if (!PrepForSetUniformByLocation(fake_location, 7518 if (!PrepForSetUniformByLocation(fake_location,
7519 "glUniform3fv", 7519 "glUniform3fv",
7520 Program::kUniform3f, 7520 Program::kUniform3f,
7521 &real_location, 7521 &real_location,
7522 &type, 7522 &type,
7523 &count)) { 7523 &count)) {
7524 return; 7524 return;
7525 } 7525 }
7526 if (type == GL_BOOL_VEC3) { 7526 if (type == GL_BOOL_VEC3) {
7527 GLsizei num_values = count * 3; 7527 GLsizei num_values = count * 3;
7528 scoped_ptr<GLint[]> temp(new GLint[num_values]); 7528 std::unique_ptr<GLint[]> temp(new GLint[num_values]);
7529 for (GLsizei ii = 0; ii < num_values; ++ii) { 7529 for (GLsizei ii = 0; ii < num_values; ++ii) {
7530 temp[ii] = static_cast<GLint>(value[ii] != 0.0f); 7530 temp[ii] = static_cast<GLint>(value[ii] != 0.0f);
7531 } 7531 }
7532 glUniform3iv(real_location, count, temp.get()); 7532 glUniform3iv(real_location, count, temp.get());
7533 } else { 7533 } else {
7534 glUniform3fv(real_location, count, value); 7534 glUniform3fv(real_location, count, value);
7535 } 7535 }
7536 } 7536 }
7537 7537
7538 void GLES2DecoderImpl::DoUniform4fv( 7538 void GLES2DecoderImpl::DoUniform4fv(
7539 GLint fake_location, GLsizei count, const GLfloat* value) { 7539 GLint fake_location, GLsizei count, const GLfloat* value) {
7540 GLenum type = 0; 7540 GLenum type = 0;
7541 GLint real_location = -1; 7541 GLint real_location = -1;
7542 if (!PrepForSetUniformByLocation(fake_location, 7542 if (!PrepForSetUniformByLocation(fake_location,
7543 "glUniform4fv", 7543 "glUniform4fv",
7544 Program::kUniform4f, 7544 Program::kUniform4f,
7545 &real_location, 7545 &real_location,
7546 &type, 7546 &type,
7547 &count)) { 7547 &count)) {
7548 return; 7548 return;
7549 } 7549 }
7550 if (type == GL_BOOL_VEC4) { 7550 if (type == GL_BOOL_VEC4) {
7551 GLsizei num_values = count * 4; 7551 GLsizei num_values = count * 4;
7552 scoped_ptr<GLint[]> temp(new GLint[num_values]); 7552 std::unique_ptr<GLint[]> temp(new GLint[num_values]);
7553 for (GLsizei ii = 0; ii < num_values; ++ii) { 7553 for (GLsizei ii = 0; ii < num_values; ++ii) {
7554 temp[ii] = static_cast<GLint>(value[ii] != 0.0f); 7554 temp[ii] = static_cast<GLint>(value[ii] != 0.0f);
7555 } 7555 }
7556 glUniform4iv(real_location, count, temp.get()); 7556 glUniform4iv(real_location, count, temp.get());
7557 } else { 7557 } else {
7558 glUniform4fv(real_location, count, value); 7558 glUniform4fv(real_location, count, value);
7559 } 7559 }
7560 } 7560 }
7561 7561
7562 void GLES2DecoderImpl::DoUniform2iv( 7562 void GLES2DecoderImpl::DoUniform2iv(
(...skipping 708 matching lines...) Expand 10 before | Expand all | Expand 10 after
8271 LOCAL_SET_GL_ERROR( 8271 LOCAL_SET_GL_ERROR(
8272 GL_OUT_OF_MEMORY, function_name, "Simulating attrib 0"); 8272 GL_OUT_OF_MEMORY, function_name, "Simulating attrib 0");
8273 return false; 8273 return false;
8274 } 8274 }
8275 if (attrib_info && 8275 if (attrib_info &&
8276 attrib->CanAccess(max_accessed) && 8276 attrib->CanAccess(max_accessed) &&
8277 attrib->type() == GL_FIXED) { 8277 attrib->type() == GL_FIXED) {
8278 int num_elements = attrib->size() * num_vertices; 8278 int num_elements = attrib->size() * num_vertices;
8279 const int src_size = num_elements * sizeof(int32_t); 8279 const int src_size = num_elements * sizeof(int32_t);
8280 const int dst_size = num_elements * sizeof(float); 8280 const int dst_size = num_elements * sizeof(float);
8281 scoped_ptr<float[]> data(new float[num_elements]); 8281 std::unique_ptr<float[]> data(new float[num_elements]);
8282 const int32_t* src = reinterpret_cast<const int32_t*>( 8282 const int32_t* src = reinterpret_cast<const int32_t*>(
8283 attrib->buffer()->GetRange(attrib->offset(), src_size)); 8283 attrib->buffer()->GetRange(attrib->offset(), src_size));
8284 const int32_t* end = src + num_elements; 8284 const int32_t* end = src + num_elements;
8285 float* dst = data.get(); 8285 float* dst = data.get();
8286 while (src != end) { 8286 while (src != end) {
8287 *dst++ = static_cast<float>(*src++) / 65536.0f; 8287 *dst++ = static_cast<float>(*src++) / 65536.0f;
8288 } 8288 }
8289 glBufferSubData(GL_ARRAY_BUFFER, offset, dst_size, data.get()); 8289 glBufferSubData(GL_ARRAY_BUFFER, offset, dst_size, data.get());
8290 glVertexAttribPointer( 8290 glVertexAttribPointer(
8291 attrib->index(), attrib->size(), GL_FLOAT, false, 0, 8291 attrib->index(), attrib->size(), GL_FLOAT, false, 0,
(...skipping 1382 matching lines...) Expand 10 before | Expand all | Expand 10 after
9674 int32_t max_y; 9674 int32_t max_y;
9675 if (!SafeAddInt32(x, width, &max_x) || !SafeAddInt32(y, height, &max_y)) { 9675 if (!SafeAddInt32(x, width, &max_x) || !SafeAddInt32(y, height, &max_y)) {
9676 LOCAL_SET_GL_ERROR( 9676 LOCAL_SET_GL_ERROR(
9677 GL_INVALID_VALUE, "glReadPixels", "dimensions out of range"); 9677 GL_INVALID_VALUE, "glReadPixels", "dimensions out of range");
9678 return error::kNoError; 9678 return error::kNoError;
9679 } 9679 }
9680 9680
9681 LOCAL_COPY_REAL_GL_ERRORS_TO_WRAPPER("glReadPixels"); 9681 LOCAL_COPY_REAL_GL_ERRORS_TO_WRAPPER("glReadPixels");
9682 9682
9683 ScopedResolvedFrameBufferBinder binder(this, false, true); 9683 ScopedResolvedFrameBufferBinder binder(this, false, true);
9684 scoped_ptr<ScopedFrameBufferReadPixelHelper> helper; 9684 std::unique_ptr<ScopedFrameBufferReadPixelHelper> helper;
9685 if (NeedsIOSurfaceReadbackWorkaround()) 9685 if (NeedsIOSurfaceReadbackWorkaround())
9686 helper.reset(new ScopedFrameBufferReadPixelHelper(&state_, this)); 9686 helper.reset(new ScopedFrameBufferReadPixelHelper(&state_, this));
9687 9687
9688 gfx::Rect rect(x, y, width, height); // Safe before we checked above. 9688 gfx::Rect rect(x, y, width, height); // Safe before we checked above.
9689 gfx::Rect max_rect(max_size); 9689 gfx::Rect max_rect(max_size);
9690 if (!max_rect.Contains(rect)) { 9690 if (!max_rect.Contains(rect)) {
9691 rect.Intersect(max_rect); 9691 rect.Intersect(max_rect);
9692 if (!rect.IsEmpty()) { 9692 if (!rect.IsEmpty()) {
9693 if (y < 0) { 9693 if (y < 0) {
9694 pixels += static_cast<uint32_t>(-y) * padded_row_size;; 9694 pixels += static_cast<uint32_t>(-y) * padded_row_size;;
(...skipping 778 matching lines...) Expand 10 before | Expand all | Expand 10 after
10473 if (!GLES2Util::ComputeImageDataSizes( 10473 if (!GLES2Util::ComputeImageDataSizes(
10474 width, tile_height, 1, format, type, state_.unpack_alignment, &size, 10474 width, tile_height, 1, format, type, state_.unpack_alignment, &size,
10475 NULL, NULL)) { 10475 NULL, NULL)) {
10476 return false; 10476 return false;
10477 } 10477 }
10478 } else { 10478 } else {
10479 tile_height = height; 10479 tile_height = height;
10480 } 10480 }
10481 10481
10482 // Assumes the size has already been checked. 10482 // Assumes the size has already been checked.
10483 scoped_ptr<char[]> zero(new char[size]); 10483 std::unique_ptr<char[]> zero(new char[size]);
10484 memset(zero.get(), 0, size); 10484 memset(zero.get(), 0, size);
10485 glBindTexture(texture->target(), texture->service_id()); 10485 glBindTexture(texture->target(), texture->service_id());
10486 10486
10487 GLint y = 0; 10487 GLint y = 0;
10488 while (y < height) { 10488 while (y < height) {
10489 GLint h = y + tile_height > height ? height - y : tile_height; 10489 GLint h = y + tile_height > height ? height - y : tile_height;
10490 glTexSubImage2D(target, level, xoffset, yoffset + y, width, h, format, type, 10490 glTexSubImage2D(target, level, xoffset, yoffset + y, width, h, format, type,
10491 zero.get()); 10491 zero.get());
10492 y += tile_height; 10492 y += tile_height;
10493 } 10493 }
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after
10585 10585
10586 TRACE_EVENT1("gpu", "GLES2DecoderImpl::ClearLevel3D", "size", size); 10586 TRACE_EVENT1("gpu", "GLES2DecoderImpl::ClearLevel3D", "size", size);
10587 10587
10588 GLuint buffer_id = 0; 10588 GLuint buffer_id = 0;
10589 glGenBuffersARB(1, &buffer_id); 10589 glGenBuffersARB(1, &buffer_id);
10590 glBindBuffer(GL_PIXEL_UNPACK_BUFFER, buffer_id); 10590 glBindBuffer(GL_PIXEL_UNPACK_BUFFER, buffer_id);
10591 { 10591 {
10592 // Include padding as some drivers incorrectly requires padding for the 10592 // Include padding as some drivers incorrectly requires padding for the
10593 // last row. 10593 // last row.
10594 buffer_size += padding; 10594 buffer_size += padding;
10595 scoped_ptr<char[]> zero(new char[buffer_size]); 10595 std::unique_ptr<char[]> zero(new char[buffer_size]);
10596 memset(zero.get(), 0, buffer_size); 10596 memset(zero.get(), 0, buffer_size);
10597 // TODO(zmo): Consider glMapBufferRange instead. 10597 // TODO(zmo): Consider glMapBufferRange instead.
10598 glBufferData( 10598 glBufferData(
10599 GL_PIXEL_UNPACK_BUFFER, buffer_size, zero.get(), GL_STATIC_DRAW); 10599 GL_PIXEL_UNPACK_BUFFER, buffer_size, zero.get(), GL_STATIC_DRAW);
10600 } 10600 }
10601 10601
10602 Buffer* bound_buffer = buffer_manager()->GetBufferInfoForTarget( 10602 Buffer* bound_buffer = buffer_manager()->GetBufferInfoForTarget(
10603 &state_, GL_PIXEL_UNPACK_BUFFER); 10603 &state_, GL_PIXEL_UNPACK_BUFFER);
10604 if (bound_buffer) { 10604 if (bound_buffer) {
10605 // If an unpack buffer is bound, we need to clear unpack parameters 10605 // If an unpack buffer is bound, we need to clear unpack parameters
(...skipping 489 matching lines...) Expand 10 before | Expand all | Expand 10 after
11095 if (!EnsureGPUMemoryAvailable(image_size)) { 11095 if (!EnsureGPUMemoryAvailable(image_size)) {
11096 LOCAL_SET_GL_ERROR( 11096 LOCAL_SET_GL_ERROR(
11097 GL_OUT_OF_MEMORY, "glCompressedTexImage2D", "out of memory"); 11097 GL_OUT_OF_MEMORY, "glCompressedTexImage2D", "out of memory");
11098 return error::kNoError; 11098 return error::kNoError;
11099 } 11099 }
11100 11100
11101 if (texture->IsAttachedToFramebuffer()) { 11101 if (texture->IsAttachedToFramebuffer()) {
11102 framebuffer_state_.clear_state_dirty = true; 11102 framebuffer_state_.clear_state_dirty = true;
11103 } 11103 }
11104 11104
11105 scoped_ptr<int8_t[]> zero; 11105 std::unique_ptr<int8_t[]> zero;
11106 if (!data) { 11106 if (!data) {
11107 zero.reset(new int8_t[image_size]); 11107 zero.reset(new int8_t[image_size]);
11108 memset(zero.get(), 0, image_size); 11108 memset(zero.get(), 0, image_size);
11109 data = zero.get(); 11109 data = zero.get();
11110 } 11110 }
11111 LOCAL_COPY_REAL_GL_ERRORS_TO_WRAPPER("glCompressedTexImage2D"); 11111 LOCAL_COPY_REAL_GL_ERRORS_TO_WRAPPER("glCompressedTexImage2D");
11112 glCompressedTexImage2D( 11112 glCompressedTexImage2D(
11113 target, level, internal_format, width, height, border, image_size, data); 11113 target, level, internal_format, width, height, border, image_size, data);
11114 GLenum error = LOCAL_PEEK_GL_ERROR("glCompressedTexImage2D"); 11114 GLenum error = LOCAL_PEEK_GL_ERROR("glCompressedTexImage2D");
11115 if (error == GL_NO_ERROR) { 11115 if (error == GL_NO_ERROR) {
(...skipping 174 matching lines...) Expand 10 before | Expand all | Expand 10 after
11290 if (!EnsureGPUMemoryAvailable(image_size)) { 11290 if (!EnsureGPUMemoryAvailable(image_size)) {
11291 LOCAL_SET_GL_ERROR( 11291 LOCAL_SET_GL_ERROR(
11292 GL_OUT_OF_MEMORY, "glCompressedTexImage3D", "out of memory"); 11292 GL_OUT_OF_MEMORY, "glCompressedTexImage3D", "out of memory");
11293 return error::kNoError; 11293 return error::kNoError;
11294 } 11294 }
11295 11295
11296 if (texture->IsAttachedToFramebuffer()) { 11296 if (texture->IsAttachedToFramebuffer()) {
11297 framebuffer_state_.clear_state_dirty = true; 11297 framebuffer_state_.clear_state_dirty = true;
11298 } 11298 }
11299 11299
11300 scoped_ptr<int8_t[]> zero; 11300 std::unique_ptr<int8_t[]> zero;
11301 if (!data) { 11301 if (!data) {
11302 zero.reset(new int8_t[image_size]); 11302 zero.reset(new int8_t[image_size]);
11303 memset(zero.get(), 0, image_size); 11303 memset(zero.get(), 0, image_size);
11304 data = zero.get(); 11304 data = zero.get();
11305 } 11305 }
11306 LOCAL_COPY_REAL_GL_ERRORS_TO_WRAPPER("glCompressedTexImage3D"); 11306 LOCAL_COPY_REAL_GL_ERRORS_TO_WRAPPER("glCompressedTexImage3D");
11307 glCompressedTexImage3D(target, level, internal_format, width, height, depth, 11307 glCompressedTexImage3D(target, level, internal_format, width, height, depth,
11308 border, image_size, data); 11308 border, image_size, data);
11309 GLenum error = LOCAL_PEEK_GL_ERROR("glCompressedTexImage3D"); 11309 GLenum error = LOCAL_PEEK_GL_ERROR("glCompressedTexImage3D");
11310 if (error == GL_NO_ERROR) { 11310 if (error == GL_NO_ERROR) {
(...skipping 545 matching lines...) Expand 10 before | Expand all | Expand 10 after
11856 GLint copyWidth = 0; 11856 GLint copyWidth = 0;
11857 GLint copyHeight = 0; 11857 GLint copyHeight = 0;
11858 Clip(x, width, size.width(), &copyX, &copyWidth); 11858 Clip(x, width, size.width(), &copyX, &copyWidth);
11859 Clip(y, height, size.height(), &copyY, &copyHeight); 11859 Clip(y, height, size.height(), &copyY, &copyHeight);
11860 11860
11861 if (copyX != x || 11861 if (copyX != x ||
11862 copyY != y || 11862 copyY != y ||
11863 copyWidth != width || 11863 copyWidth != width ||
11864 copyHeight != height) { 11864 copyHeight != height) {
11865 // some part was clipped so clear the rect. 11865 // some part was clipped so clear the rect.
11866 scoped_ptr<char[]> zero(new char[pixels_size]); 11866 std::unique_ptr<char[]> zero(new char[pixels_size]);
11867 memset(zero.get(), 0, pixels_size); 11867 memset(zero.get(), 0, pixels_size);
11868 glTexImage2D(target, level, 11868 glTexImage2D(target, level,
11869 texture_manager()->AdjustTexInternalFormat(internal_format), 11869 texture_manager()->AdjustTexInternalFormat(internal_format),
11870 width, height, border, format, type, zero.get()); 11870 width, height, border, format, type, zero.get());
11871 if (copyHeight > 0 && copyWidth > 0) { 11871 if (copyHeight > 0 && copyWidth > 0) {
11872 GLint dx = copyX - x; 11872 GLint dx = copyX - x;
11873 GLint dy = copyY - y; 11873 GLint dy = copyY - y;
11874 GLint destX = dx; 11874 GLint destX = dx;
11875 GLint destY = dy; 11875 GLint destY = dy;
11876 glCopyTexSubImage2D(target, level, 11876 glCopyTexSubImage2D(target, level,
(...skipping 501 matching lines...) Expand 10 before | Expand all | Expand 10 after
12378 cmds::GetUniformfv::Result* result; 12378 cmds::GetUniformfv::Result* result;
12379 GLenum result_type; 12379 GLenum result_type;
12380 GLsizei result_size; 12380 GLsizei result_size;
12381 if (GetUniformSetup<GLfloat>(program, fake_location, c.params_shm_id, 12381 if (GetUniformSetup<GLfloat>(program, fake_location, c.params_shm_id,
12382 c.params_shm_offset, &error, &real_location, 12382 c.params_shm_offset, &error, &real_location,
12383 &service_id, &result, &result_type, 12383 &service_id, &result, &result_type,
12384 &result_size)) { 12384 &result_size)) {
12385 if (result_type == GL_BOOL || result_type == GL_BOOL_VEC2 || 12385 if (result_type == GL_BOOL || result_type == GL_BOOL_VEC2 ||
12386 result_type == GL_BOOL_VEC3 || result_type == GL_BOOL_VEC4) { 12386 result_type == GL_BOOL_VEC3 || result_type == GL_BOOL_VEC4) {
12387 GLsizei num_values = result_size / sizeof(GLfloat); 12387 GLsizei num_values = result_size / sizeof(GLfloat);
12388 scoped_ptr<GLint[]> temp(new GLint[num_values]); 12388 std::unique_ptr<GLint[]> temp(new GLint[num_values]);
12389 glGetUniformiv(service_id, real_location, temp.get()); 12389 glGetUniformiv(service_id, real_location, temp.get());
12390 GLfloat* dst = result->GetData(); 12390 GLfloat* dst = result->GetData();
12391 for (GLsizei ii = 0; ii < num_values; ++ii) { 12391 for (GLsizei ii = 0; ii < num_values; ++ii) {
12392 dst[ii] = (temp[ii] != 0); 12392 dst[ii] = (temp[ii] != 0);
12393 } 12393 }
12394 } else { 12394 } else {
12395 glGetUniformfv(service_id, real_location, result->GetData()); 12395 glGetUniformfv(service_id, real_location, result->GetData());
12396 } 12396 }
12397 } 12397 }
12398 return error; 12398 return error;
(...skipping 340 matching lines...) Expand 10 before | Expand all | Expand 10 after
12739 return error::kOutOfBounds; 12739 return error::kOutOfBounds;
12740 } 12740 }
12741 const GLuint* shaders = GetSharedMemoryAs<const GLuint*>( 12741 const GLuint* shaders = GetSharedMemoryAs<const GLuint*>(
12742 c.shaders_shm_id, c.shaders_shm_offset, data_size); 12742 c.shaders_shm_id, c.shaders_shm_offset, data_size);
12743 GLenum binaryformat = static_cast<GLenum>(c.binaryformat); 12743 GLenum binaryformat = static_cast<GLenum>(c.binaryformat);
12744 const void* binary = GetSharedMemoryAs<const void*>( 12744 const void* binary = GetSharedMemoryAs<const void*>(
12745 c.binary_shm_id, c.binary_shm_offset, length); 12745 c.binary_shm_id, c.binary_shm_offset, length);
12746 if (shaders == NULL || binary == NULL) { 12746 if (shaders == NULL || binary == NULL) {
12747 return error::kOutOfBounds; 12747 return error::kOutOfBounds;
12748 } 12748 }
12749 scoped_ptr<GLuint[]> service_ids(new GLuint[n]); 12749 std::unique_ptr<GLuint[]> service_ids(new GLuint[n]);
12750 for (GLsizei ii = 0; ii < n; ++ii) { 12750 for (GLsizei ii = 0; ii < n; ++ii) {
12751 Shader* shader = GetShader(shaders[ii]); 12751 Shader* shader = GetShader(shaders[ii]);
12752 if (!shader) { 12752 if (!shader) {
12753 LOCAL_SET_GL_ERROR(GL_INVALID_VALUE, "glShaderBinary", "unknown shader"); 12753 LOCAL_SET_GL_ERROR(GL_INVALID_VALUE, "glShaderBinary", "unknown shader");
12754 return error::kNoError; 12754 return error::kNoError;
12755 } 12755 }
12756 service_ids[ii] = shader->service_id(); 12756 service_ids[ii] = shader->service_id();
12757 } 12757 }
12758 // TODO(gman): call glShaderBinary 12758 // TODO(gman): call glShaderBinary
12759 return error::kNoError; 12759 return error::kNoError;
(...skipping 818 matching lines...) Expand 10 before | Expand all | Expand 10 after
13578 return false; 13578 return false;
13579 } 13579 }
13580 } 13580 }
13581 13581
13582 if (!features().native_vertex_array_object) { 13582 if (!features().native_vertex_array_object) {
13583 // Emulated VAO 13583 // Emulated VAO
13584 for (GLsizei ii = 0; ii < n; ++ii) { 13584 for (GLsizei ii = 0; ii < n; ++ii) {
13585 CreateVertexAttribManager(client_ids[ii], 0, true); 13585 CreateVertexAttribManager(client_ids[ii], 0, true);
13586 } 13586 }
13587 } else { 13587 } else {
13588 scoped_ptr<GLuint[]> service_ids(new GLuint[n]); 13588 std::unique_ptr<GLuint[]> service_ids(new GLuint[n]);
13589 13589
13590 glGenVertexArraysOES(n, service_ids.get()); 13590 glGenVertexArraysOES(n, service_ids.get());
13591 for (GLsizei ii = 0; ii < n; ++ii) { 13591 for (GLsizei ii = 0; ii < n; ++ii) {
13592 CreateVertexAttribManager(client_ids[ii], service_ids[ii], true); 13592 CreateVertexAttribManager(client_ids[ii], service_ids[ii], true);
13593 } 13593 }
13594 } 13594 }
13595 13595
13596 return true; 13596 return true;
13597 } 13597 }
13598 13598
(...skipping 1883 matching lines...) Expand 10 before | Expand all | Expand 10 after
15482 transform_type, "transformType"); 15482 transform_type, "transformType");
15483 return false; 15483 return false;
15484 } 15484 }
15485 *out_transform_type = transform_type; 15485 *out_transform_type = transform_type;
15486 return true; 15486 return true;
15487 } 15487 }
15488 template <typename Cmd> 15488 template <typename Cmd>
15489 bool GetPathNameData(const Cmd& cmd, 15489 bool GetPathNameData(const Cmd& cmd,
15490 GLuint num_paths, 15490 GLuint num_paths,
15491 GLenum path_name_type, 15491 GLenum path_name_type,
15492 scoped_ptr<GLuint[]>* out_buffer) { 15492 std::unique_ptr<GLuint[]>* out_buffer) {
15493 DCHECK(validators_->path_name_type.IsValid(path_name_type)); 15493 DCHECK(validators_->path_name_type.IsValid(path_name_type));
15494 GLuint path_base = static_cast<GLuint>(cmd.pathBase); 15494 GLuint path_base = static_cast<GLuint>(cmd.pathBase);
15495 uint32_t shm_id = static_cast<uint32_t>(cmd.paths_shm_id); 15495 uint32_t shm_id = static_cast<uint32_t>(cmd.paths_shm_id);
15496 uint32_t shm_offset = static_cast<uint32_t>(cmd.paths_shm_offset); 15496 uint32_t shm_offset = static_cast<uint32_t>(cmd.paths_shm_offset);
15497 if (shm_id == 0 && shm_offset == 0) { 15497 if (shm_id == 0 && shm_offset == 0) {
15498 error_ = error::kOutOfBounds; 15498 error_ = error::kOutOfBounds;
15499 return false; 15499 return false;
15500 } 15500 }
15501 switch (path_name_type) { 15501 switch (path_name_type) {
15502 case GL_BYTE: 15502 case GL_BYTE:
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
15569 *out_cover_mode = cover_mode; 15569 *out_cover_mode = cover_mode;
15570 return true; 15570 return true;
15571 } 15571 }
15572 15572
15573 private: 15573 private:
15574 template <typename T> 15574 template <typename T>
15575 bool GetPathNameDataImpl(GLuint num_paths, 15575 bool GetPathNameDataImpl(GLuint num_paths,
15576 GLuint path_base, 15576 GLuint path_base,
15577 uint32_t shm_id, 15577 uint32_t shm_id,
15578 uint32_t shm_offset, 15578 uint32_t shm_offset,
15579 scoped_ptr<GLuint[]>* out_buffer) { 15579 std::unique_ptr<GLuint[]>* out_buffer) {
15580 uint32_t paths_size = 0; 15580 uint32_t paths_size = 0;
15581 if (!SafeMultiplyUint32(num_paths, sizeof(T), &paths_size)) { 15581 if (!SafeMultiplyUint32(num_paths, sizeof(T), &paths_size)) {
15582 error_ = error::kOutOfBounds; 15582 error_ = error::kOutOfBounds;
15583 return false; 15583 return false;
15584 } 15584 }
15585 T* paths = decoder_->GetSharedMemoryAs<T*>(shm_id, shm_offset, paths_size); 15585 T* paths = decoder_->GetSharedMemoryAs<T*>(shm_id, shm_offset, paths_size);
15586 if (!paths) { 15586 if (!paths) {
15587 error_ = error::kOutOfBounds; 15587 error_ = error::kOutOfBounds;
15588 return false; 15588 return false;
15589 } 15589 }
15590 scoped_ptr<GLuint[]> result_paths(new GLuint[num_paths]); 15590 std::unique_ptr<GLuint[]> result_paths(new GLuint[num_paths]);
15591 bool has_paths = false; 15591 bool has_paths = false;
15592 for (GLuint i = 0; i < num_paths; ++i) { 15592 for (GLuint i = 0; i < num_paths; ++i) {
15593 GLuint service_id = 0; 15593 GLuint service_id = 0;
15594 // The below addition is ok even with over- and underflows. 15594 // The below addition is ok even with over- and underflows.
15595 // There is no difference if client passes: 15595 // There is no difference if client passes:
15596 // * base==4, T=GLbyte, paths[0]==0xfa (-6) 15596 // * base==4, T=GLbyte, paths[0]==0xfa (-6)
15597 // * base==0xffffffff, T=GLuint, paths[0]==0xffffffff 15597 // * base==0xffffffff, T=GLuint, paths[0]==0xffffffff
15598 // * base==0, T=GLuint, paths[0]==0xfffffffe 15598 // * base==0, T=GLuint, paths[0]==0xfffffffe
15599 // For the all the cases, the interpretation is that 15599 // For the all the cases, the interpretation is that
15600 // client intends to use the path 0xfffffffe. 15600 // client intends to use the path 0xfffffffe.
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after
15695 LOCAL_SET_GL_ERROR(GL_INVALID_VALUE, kFunctionName, "numCoords < 0"); 15695 LOCAL_SET_GL_ERROR(GL_INVALID_VALUE, kFunctionName, "numCoords < 0");
15696 return error::kNoError; 15696 return error::kNoError;
15697 } 15697 }
15698 15698
15699 GLenum coord_type = static_cast<uint32_t>(c.coordType); 15699 GLenum coord_type = static_cast<uint32_t>(c.coordType);
15700 if (!validators_->path_coord_type.IsValid(static_cast<GLint>(coord_type))) { 15700 if (!validators_->path_coord_type.IsValid(static_cast<GLint>(coord_type))) {
15701 LOCAL_SET_GL_ERROR(GL_INVALID_ENUM, kFunctionName, "invalid coordType"); 15701 LOCAL_SET_GL_ERROR(GL_INVALID_ENUM, kFunctionName, "invalid coordType");
15702 return error::kNoError; 15702 return error::kNoError;
15703 } 15703 }
15704 15704
15705 scoped_ptr<GLubyte[]> commands; 15705 std::unique_ptr<GLubyte[]> commands;
15706 base::CheckedNumeric<GLsizei> num_coords_expected = 0; 15706 base::CheckedNumeric<GLsizei> num_coords_expected = 0;
15707 15707
15708 if (num_commands > 0) { 15708 if (num_commands > 0) {
15709 uint32_t commands_shm_id = static_cast<uint32_t>(c.commands_shm_id); 15709 uint32_t commands_shm_id = static_cast<uint32_t>(c.commands_shm_id);
15710 uint32_t commands_shm_offset = static_cast<uint32_t>(c.commands_shm_offset); 15710 uint32_t commands_shm_offset = static_cast<uint32_t>(c.commands_shm_offset);
15711 if (commands_shm_id != 0 || commands_shm_offset != 0) { 15711 if (commands_shm_id != 0 || commands_shm_offset != 0) {
15712 const GLubyte* shared_commands = GetSharedMemoryAs<const GLubyte*>( 15712 const GLubyte* shared_commands = GetSharedMemoryAs<const GLubyte*>(
15713 commands_shm_id, commands_shm_offset, num_commands); 15713 commands_shm_id, commands_shm_offset, num_commands);
15714 if (shared_commands) { 15714 if (shared_commands) {
15715 commands.reset(new GLubyte[num_commands]); 15715 commands.reset(new GLubyte[num_commands]);
(...skipping 317 matching lines...) Expand 10 before | Expand all | Expand 10 after
16033 GLuint mask = 0; 16033 GLuint mask = 0;
16034 GLenum transform_type = GL_NONE; 16034 GLenum transform_type = GL_NONE;
16035 if (!v.GetPathCountAndType(c, &num_paths, &path_name_type) || 16035 if (!v.GetPathCountAndType(c, &num_paths, &path_name_type) ||
16036 !v.GetFillModeAndMask(c, &fill_mode, &mask) || 16036 !v.GetFillModeAndMask(c, &fill_mode, &mask) ||
16037 !v.GetTransformType(c, &transform_type)) 16037 !v.GetTransformType(c, &transform_type))
16038 return v.error(); 16038 return v.error();
16039 16039
16040 if (num_paths == 0) 16040 if (num_paths == 0)
16041 return error::kNoError; 16041 return error::kNoError;
16042 16042
16043 scoped_ptr<GLuint[]> paths; 16043 std::unique_ptr<GLuint[]> paths;
16044 if (!v.GetPathNameData(c, num_paths, path_name_type, &paths)) 16044 if (!v.GetPathNameData(c, num_paths, path_name_type, &paths))
16045 return v.error(); 16045 return v.error();
16046 16046
16047 const GLfloat* transforms = nullptr; 16047 const GLfloat* transforms = nullptr;
16048 if (!v.GetTransforms(c, num_paths, transform_type, &transforms)) 16048 if (!v.GetTransforms(c, num_paths, transform_type, &transforms))
16049 return v.error(); 16049 return v.error();
16050 16050
16051 ApplyDirtyState(); 16051 ApplyDirtyState();
16052 glStencilFillPathInstancedNV(num_paths, GL_UNSIGNED_INT, paths.get(), 0, 16052 glStencilFillPathInstancedNV(num_paths, GL_UNSIGNED_INT, paths.get(), 0,
16053 fill_mode, mask, transform_type, transforms); 16053 fill_mode, mask, transform_type, transforms);
(...skipping 13 matching lines...) Expand all
16067 GLuint num_paths = 0; 16067 GLuint num_paths = 0;
16068 GLenum path_name_type = GL_NONE; 16068 GLenum path_name_type = GL_NONE;
16069 GLenum transform_type = GL_NONE; 16069 GLenum transform_type = GL_NONE;
16070 if (!v.GetPathCountAndType(c, &num_paths, &path_name_type) || 16070 if (!v.GetPathCountAndType(c, &num_paths, &path_name_type) ||
16071 !v.GetTransformType(c, &transform_type)) 16071 !v.GetTransformType(c, &transform_type))
16072 return v.error(); 16072 return v.error();
16073 16073
16074 if (num_paths == 0) 16074 if (num_paths == 0)
16075 return error::kNoError; 16075 return error::kNoError;
16076 16076
16077 scoped_ptr<GLuint[]> paths; 16077 std::unique_ptr<GLuint[]> paths;
16078 if (!v.GetPathNameData(c, num_paths, path_name_type, &paths)) 16078 if (!v.GetPathNameData(c, num_paths, path_name_type, &paths))
16079 return v.error(); 16079 return v.error();
16080 16080
16081 const GLfloat* transforms = nullptr; 16081 const GLfloat* transforms = nullptr;
16082 if (!v.GetTransforms(c, num_paths, transform_type, &transforms)) 16082 if (!v.GetTransforms(c, num_paths, transform_type, &transforms))
16083 return v.error(); 16083 return v.error();
16084 16084
16085 GLint reference = static_cast<GLint>(c.reference); 16085 GLint reference = static_cast<GLint>(c.reference);
16086 GLuint mask = static_cast<GLuint>(c.mask); 16086 GLuint mask = static_cast<GLuint>(c.mask);
16087 ApplyDirtyState(); 16087 ApplyDirtyState();
(...skipping 17 matching lines...) Expand all
16105 GLenum cover_mode = GL_BOUNDING_BOX_OF_BOUNDING_BOXES_CHROMIUM; 16105 GLenum cover_mode = GL_BOUNDING_BOX_OF_BOUNDING_BOXES_CHROMIUM;
16106 GLenum transform_type = GL_NONE; 16106 GLenum transform_type = GL_NONE;
16107 if (!v.GetPathCountAndType(c, &num_paths, &path_name_type) || 16107 if (!v.GetPathCountAndType(c, &num_paths, &path_name_type) ||
16108 !v.GetCoverMode(c, &cover_mode) || 16108 !v.GetCoverMode(c, &cover_mode) ||
16109 !v.GetTransformType(c, &transform_type)) 16109 !v.GetTransformType(c, &transform_type))
16110 return v.error(); 16110 return v.error();
16111 16111
16112 if (num_paths == 0) 16112 if (num_paths == 0)
16113 return error::kNoError; 16113 return error::kNoError;
16114 16114
16115 scoped_ptr<GLuint[]> paths; 16115 std::unique_ptr<GLuint[]> paths;
16116 if (!v.GetPathNameData(c, num_paths, path_name_type, &paths)) 16116 if (!v.GetPathNameData(c, num_paths, path_name_type, &paths))
16117 return v.error(); 16117 return v.error();
16118 16118
16119 const GLfloat* transforms = nullptr; 16119 const GLfloat* transforms = nullptr;
16120 if (!v.GetTransforms(c, num_paths, transform_type, &transforms)) 16120 if (!v.GetTransforms(c, num_paths, transform_type, &transforms))
16121 return v.error(); 16121 return v.error();
16122 16122
16123 ApplyDirtyState(); 16123 ApplyDirtyState();
16124 glCoverFillPathInstancedNV(num_paths, GL_UNSIGNED_INT, paths.get(), 0, 16124 glCoverFillPathInstancedNV(num_paths, GL_UNSIGNED_INT, paths.get(), 0,
16125 cover_mode, transform_type, transforms); 16125 cover_mode, transform_type, transforms);
(...skipping 15 matching lines...) Expand all
16141 GLenum cover_mode = GL_BOUNDING_BOX_OF_BOUNDING_BOXES_CHROMIUM; 16141 GLenum cover_mode = GL_BOUNDING_BOX_OF_BOUNDING_BOXES_CHROMIUM;
16142 GLenum transform_type = GL_NONE; 16142 GLenum transform_type = GL_NONE;
16143 if (!v.GetPathCountAndType(c, &num_paths, &path_name_type) || 16143 if (!v.GetPathCountAndType(c, &num_paths, &path_name_type) ||
16144 !v.GetCoverMode(c, &cover_mode) || 16144 !v.GetCoverMode(c, &cover_mode) ||
16145 !v.GetTransformType(c, &transform_type)) 16145 !v.GetTransformType(c, &transform_type))
16146 return v.error(); 16146 return v.error();
16147 16147
16148 if (num_paths == 0) 16148 if (num_paths == 0)
16149 return error::kNoError; 16149 return error::kNoError;
16150 16150
16151 scoped_ptr<GLuint[]> paths; 16151 std::unique_ptr<GLuint[]> paths;
16152 if (!v.GetPathNameData(c, num_paths, path_name_type, &paths)) 16152 if (!v.GetPathNameData(c, num_paths, path_name_type, &paths))
16153 return v.error(); 16153 return v.error();
16154 16154
16155 const GLfloat* transforms = nullptr; 16155 const GLfloat* transforms = nullptr;
16156 if (!v.GetTransforms(c, num_paths, transform_type, &transforms)) 16156 if (!v.GetTransforms(c, num_paths, transform_type, &transforms))
16157 return v.error(); 16157 return v.error();
16158 16158
16159 ApplyDirtyState(); 16159 ApplyDirtyState();
16160 glCoverStrokePathInstancedNV(num_paths, GL_UNSIGNED_INT, paths.get(), 0, 16160 glCoverStrokePathInstancedNV(num_paths, GL_UNSIGNED_INT, paths.get(), 0,
16161 cover_mode, transform_type, transforms); 16161 cover_mode, transform_type, transforms);
(...skipping 19 matching lines...) Expand all
16181 GLenum transform_type = GL_NONE; 16181 GLenum transform_type = GL_NONE;
16182 if (!v.GetPathCountAndType(c, &num_paths, &path_name_type) || 16182 if (!v.GetPathCountAndType(c, &num_paths, &path_name_type) ||
16183 !v.GetFillModeAndMask(c, &fill_mode, &mask) || 16183 !v.GetFillModeAndMask(c, &fill_mode, &mask) ||
16184 !v.GetCoverMode(c, &cover_mode) || 16184 !v.GetCoverMode(c, &cover_mode) ||
16185 !v.GetTransformType(c, &transform_type)) 16185 !v.GetTransformType(c, &transform_type))
16186 return v.error(); 16186 return v.error();
16187 16187
16188 if (num_paths == 0) 16188 if (num_paths == 0)
16189 return error::kNoError; 16189 return error::kNoError;
16190 16190
16191 scoped_ptr<GLuint[]> paths; 16191 std::unique_ptr<GLuint[]> paths;
16192 if (!v.GetPathNameData(c, num_paths, path_name_type, &paths)) 16192 if (!v.GetPathNameData(c, num_paths, path_name_type, &paths))
16193 return v.error(); 16193 return v.error();
16194 16194
16195 const GLfloat* transforms = nullptr; 16195 const GLfloat* transforms = nullptr;
16196 if (!v.GetTransforms(c, num_paths, transform_type, &transforms)) 16196 if (!v.GetTransforms(c, num_paths, transform_type, &transforms))
16197 return v.error(); 16197 return v.error();
16198 16198
16199 ApplyDirtyState(); 16199 ApplyDirtyState();
16200 glStencilThenCoverFillPathInstancedNV(num_paths, GL_UNSIGNED_INT, paths.get(), 16200 glStencilThenCoverFillPathInstancedNV(num_paths, GL_UNSIGNED_INT, paths.get(),
16201 0, fill_mode, mask, cover_mode, 16201 0, fill_mode, mask, cover_mode,
(...skipping 18 matching lines...) Expand all
16220 GLenum cover_mode = GL_BOUNDING_BOX_OF_BOUNDING_BOXES_CHROMIUM; 16220 GLenum cover_mode = GL_BOUNDING_BOX_OF_BOUNDING_BOXES_CHROMIUM;
16221 GLenum transform_type = GL_NONE; 16221 GLenum transform_type = GL_NONE;
16222 if (!v.GetPathCountAndType(c, &num_paths, &path_name_type) || 16222 if (!v.GetPathCountAndType(c, &num_paths, &path_name_type) ||
16223 !v.GetCoverMode(c, &cover_mode) || 16223 !v.GetCoverMode(c, &cover_mode) ||
16224 !v.GetTransformType(c, &transform_type)) 16224 !v.GetTransformType(c, &transform_type))
16225 return v.error(); 16225 return v.error();
16226 16226
16227 if (num_paths == 0) 16227 if (num_paths == 0)
16228 return error::kNoError; 16228 return error::kNoError;
16229 16229
16230 scoped_ptr<GLuint[]> paths; 16230 std::unique_ptr<GLuint[]> paths;
16231 if (!v.GetPathNameData(c, num_paths, path_name_type, &paths)) 16231 if (!v.GetPathNameData(c, num_paths, path_name_type, &paths))
16232 return v.error(); 16232 return v.error();
16233 16233
16234 const GLfloat* transforms = nullptr; 16234 const GLfloat* transforms = nullptr;
16235 if (!v.GetTransforms(c, num_paths, transform_type, &transforms)) 16235 if (!v.GetTransforms(c, num_paths, transform_type, &transforms))
16236 return v.error(); 16236 return v.error();
16237 16237
16238 GLint reference = static_cast<GLint>(c.reference); 16238 GLint reference = static_cast<GLint>(c.reference);
16239 GLuint mask = static_cast<GLuint>(c.mask); 16239 GLuint mask = static_cast<GLuint>(c.mask);
16240 ApplyDirtyState(); 16240 ApplyDirtyState();
(...skipping 271 matching lines...) Expand 10 before | Expand all | Expand 10 after
16512 } 16512 }
16513 16513
16514 // Include the auto-generated part of this file. We split this because it means 16514 // Include the auto-generated part of this file. We split this because it means
16515 // we can easily edit the non-auto generated parts right here in this file 16515 // we can easily edit the non-auto generated parts right here in this file
16516 // instead of having to edit some template or the code generator. 16516 // instead of having to edit some template or the code generator.
16517 #include "base/macros.h" 16517 #include "base/macros.h"
16518 #include "gpu/command_buffer/service/gles2_cmd_decoder_autogen.h" 16518 #include "gpu/command_buffer/service/gles2_cmd_decoder_autogen.h"
16519 16519
16520 } // namespace gles2 16520 } // namespace gles2
16521 } // namespace gpu 16521 } // namespace gpu
OLDNEW
« no previous file with comments | « gpu/command_buffer/service/framebuffer_manager_unittest.cc ('k') | gpu/command_buffer/service/gles2_cmd_decoder_autogen.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698