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

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

Issue 2736643004: Add DCLayerOverlayProcessor and supporting DCLayer structures. (Closed)
Patch Set: split CALayerOverlay into DCLayerOverlay Created 3 years, 9 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>
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
70 #include "third_party/smhasher/src/City.h" 70 #include "third_party/smhasher/src/City.h"
71 #include "ui/gfx/buffer_types.h" 71 #include "ui/gfx/buffer_types.h"
72 #include "ui/gfx/geometry/point.h" 72 #include "ui/gfx/geometry/point.h"
73 #include "ui/gfx/geometry/rect.h" 73 #include "ui/gfx/geometry/rect.h"
74 #include "ui/gfx/geometry/rect_conversions.h" 74 #include "ui/gfx/geometry/rect_conversions.h"
75 #include "ui/gfx/geometry/size.h" 75 #include "ui/gfx/geometry/size.h"
76 #include "ui/gfx/gpu_memory_buffer.h" 76 #include "ui/gfx/gpu_memory_buffer.h"
77 #include "ui/gfx/overlay_transform.h" 77 #include "ui/gfx/overlay_transform.h"
78 #include "ui/gfx/transform.h" 78 #include "ui/gfx/transform.h"
79 #include "ui/gl/ca_renderer_layer_params.h" 79 #include "ui/gl/ca_renderer_layer_params.h"
80 #include "ui/gl/dc_renderer_layer_params.h"
80 #include "ui/gl/gl_bindings.h" 81 #include "ui/gl/gl_bindings.h"
81 #include "ui/gl/gl_context.h" 82 #include "ui/gl/gl_context.h"
82 #include "ui/gl/gl_fence.h" 83 #include "ui/gl/gl_fence.h"
83 #include "ui/gl/gl_image.h" 84 #include "ui/gl/gl_image.h"
84 #include "ui/gl/gl_implementation.h" 85 #include "ui/gl/gl_implementation.h"
85 #include "ui/gl/gl_surface.h" 86 #include "ui/gl/gl_surface.h"
86 #include "ui/gl/gl_version_info.h" 87 #include "ui/gl/gl_version_info.h"
87 #include "ui/gl/gpu_timing.h" 88 #include "ui/gl/gpu_timing.h"
88 89
89 #if defined(OS_MACOSX) 90 #if defined(OS_MACOSX)
(...skipping 2068 matching lines...) Expand 10 before | Expand all | Expand 10 after
2158 GLuint* source_texture_service_id, 2159 GLuint* source_texture_service_id,
2159 GLenum* source_texture_target); 2160 GLenum* source_texture_target);
2160 2161
2161 // Whether a texture backed by a Chromium Image needs to emulate GL_RGB format 2162 // Whether a texture backed by a Chromium Image needs to emulate GL_RGB format
2162 // using GL_RGBA and glColorMask. 2163 // using GL_RGBA and glColorMask.
2163 bool ChromiumImageNeedsRGBEmulation(); 2164 bool ChromiumImageNeedsRGBEmulation();
2164 2165
2165 // The GL_CHROMIUM_schedule_ca_layer extension requires that SwapBuffers and 2166 // The GL_CHROMIUM_schedule_ca_layer extension requires that SwapBuffers and
2166 // equivalent functions reset shared state. 2167 // equivalent functions reset shared state.
2167 void ClearScheduleCALayerState(); 2168 void ClearScheduleCALayerState();
2169 void ClearScheduleDCLayerState();
2168 2170
2169 // Helper method to call glClear workaround. 2171 // Helper method to call glClear workaround.
2170 void ClearFramebufferForWorkaround(GLbitfield mask); 2172 void ClearFramebufferForWorkaround(GLbitfield mask);
2171 2173
2172 bool SupportsSeparateFramebufferBinds() const { 2174 bool SupportsSeparateFramebufferBinds() const {
2173 return (feature_info_->feature_flags().chromium_framebuffer_multisample || 2175 return (feature_info_->feature_flags().chromium_framebuffer_multisample ||
2174 feature_info_->IsWebGL2OrES3Context()); 2176 feature_info_->IsWebGL2OrES3Context());
2175 } 2177 }
2176 2178
2177 GLenum GetDrawFramebufferTarget() const { 2179 GLenum GetDrawFramebufferTarget() const {
(...skipping 277 matching lines...) Expand 10 before | Expand all | Expand 10 after
2455 struct CALayerSharedState{ 2457 struct CALayerSharedState{
2456 float opacity; 2458 float opacity;
2457 bool is_clipped; 2459 bool is_clipped;
2458 gfx::Rect clip_rect; 2460 gfx::Rect clip_rect;
2459 int sorting_context_id; 2461 int sorting_context_id;
2460 gfx::Transform transform; 2462 gfx::Transform transform;
2461 }; 2463 };
2462 2464
2463 std::unique_ptr<CALayerSharedState> ca_layer_shared_state_; 2465 std::unique_ptr<CALayerSharedState> ca_layer_shared_state_;
2464 2466
2467 struct DCLayerSharedState {
2468 float opacity;
2469 bool is_clipped;
2470 gfx::Rect clip_rect;
2471 int z_order;
2472 gfx::Transform transform;
2473 };
2474
2475 std::unique_ptr<DCLayerSharedState> dc_layer_shared_state_;
2476
2465 DISALLOW_COPY_AND_ASSIGN(GLES2DecoderImpl); 2477 DISALLOW_COPY_AND_ASSIGN(GLES2DecoderImpl);
2466 }; 2478 };
2467 2479
2468 const GLES2DecoderImpl::CommandInfo GLES2DecoderImpl::command_info[] = { 2480 const GLES2DecoderImpl::CommandInfo GLES2DecoderImpl::command_info[] = {
2469 #define GLES2_CMD_OP(name) \ 2481 #define GLES2_CMD_OP(name) \
2470 { \ 2482 { \
2471 &GLES2DecoderImpl::Handle##name, cmds::name::kArgFlags, \ 2483 &GLES2DecoderImpl::Handle##name, cmds::name::kArgFlags, \
2472 cmds::name::cmd_flags, \ 2484 cmds::name::cmd_flags, \
2473 sizeof(cmds::name) / sizeof(CommandBufferEntry) - 1, \ 2485 sizeof(cmds::name) / sizeof(CommandBufferEntry) - 1, \
2474 } \ 2486 } \
(...skipping 9323 matching lines...) Expand 10 before | Expand all | Expand 10 after
11798 TRACE_EVENT_CATEGORY_GROUP_ENABLED(TRACE_DISABLED_BY_DEFAULT("gpu.debug"), 11810 TRACE_EVENT_CATEGORY_GROUP_ENABLED(TRACE_DISABLED_BY_DEFAULT("gpu.debug"),
11799 &is_tracing); 11811 &is_tracing);
11800 if (is_tracing) { 11812 if (is_tracing) {
11801 bool is_offscreen = !!offscreen_target_frame_buffer_.get(); 11813 bool is_offscreen = !!offscreen_target_frame_buffer_.get();
11802 ScopedFramebufferBinder binder(this, GetBoundDrawFramebufferServiceId()); 11814 ScopedFramebufferBinder binder(this, GetBoundDrawFramebufferServiceId());
11803 gpu_state_tracer_->TakeSnapshotWithCurrentFramebuffer( 11815 gpu_state_tracer_->TakeSnapshotWithCurrentFramebuffer(
11804 is_offscreen ? offscreen_size_ : surface_->GetSize()); 11816 is_offscreen ? offscreen_size_ : surface_->GetSize());
11805 } 11817 }
11806 11818
11807 ClearScheduleCALayerState(); 11819 ClearScheduleCALayerState();
11820 ClearScheduleDCLayerState();
11808 11821
11809 std::vector<gfx::Rect> bounds(count); 11822 std::vector<gfx::Rect> bounds(count);
11810 for (GLsizei i = 0; i < count; ++i) { 11823 for (GLsizei i = 0; i < count; ++i) {
11811 bounds[i] = gfx::Rect(rects[i * 4 + 0], rects[i * 4 + 1], rects[i * 4 + 2], 11824 bounds[i] = gfx::Rect(rects[i * 4 + 0], rects[i * 4 + 1], rects[i * 4 + 2],
11812 rects[i * 4 + 3]); 11825 rects[i * 4 + 3]);
11813 } 11826 }
11814 FinishSwapBuffers(surface_->SwapBuffersWithBounds(bounds)); 11827 FinishSwapBuffers(surface_->SwapBuffersWithBounds(bounds));
11815 } 11828 }
11816 11829
11817 error::Error GLES2DecoderImpl::HandlePostSubBufferCHROMIUM( 11830 error::Error GLES2DecoderImpl::HandlePostSubBufferCHROMIUM(
(...skipping 16 matching lines...) Expand all
11834 TRACE_EVENT_CATEGORY_GROUP_ENABLED(TRACE_DISABLED_BY_DEFAULT("gpu.debug"), 11847 TRACE_EVENT_CATEGORY_GROUP_ENABLED(TRACE_DISABLED_BY_DEFAULT("gpu.debug"),
11835 &is_tracing); 11848 &is_tracing);
11836 if (is_tracing) { 11849 if (is_tracing) {
11837 bool is_offscreen = !!offscreen_target_frame_buffer_.get(); 11850 bool is_offscreen = !!offscreen_target_frame_buffer_.get();
11838 ScopedFramebufferBinder binder(this, GetBoundDrawFramebufferServiceId()); 11851 ScopedFramebufferBinder binder(this, GetBoundDrawFramebufferServiceId());
11839 gpu_state_tracer_->TakeSnapshotWithCurrentFramebuffer( 11852 gpu_state_tracer_->TakeSnapshotWithCurrentFramebuffer(
11840 is_offscreen ? offscreen_size_ : surface_->GetSize()); 11853 is_offscreen ? offscreen_size_ : surface_->GetSize());
11841 } 11854 }
11842 11855
11843 ClearScheduleCALayerState(); 11856 ClearScheduleCALayerState();
11857 ClearScheduleDCLayerState();
11844 11858
11845 if (supports_async_swap_) { 11859 if (supports_async_swap_) {
11846 TRACE_EVENT_ASYNC_BEGIN0("cc", "GLES2DecoderImpl::AsyncSwapBuffers", this); 11860 TRACE_EVENT_ASYNC_BEGIN0("cc", "GLES2DecoderImpl::AsyncSwapBuffers", this);
11847 surface_->PostSubBufferAsync( 11861 surface_->PostSubBufferAsync(
11848 c.x, c.y, c.width, c.height, 11862 c.x, c.y, c.width, c.height,
11849 base::Bind(&GLES2DecoderImpl::FinishSwapBuffers, 11863 base::Bind(&GLES2DecoderImpl::FinishSwapBuffers,
11850 base::AsWeakPtr(this))); 11864 base::AsWeakPtr(this)));
11851 } else { 11865 } else {
11852 FinishSwapBuffers(surface_->PostSubBuffer(c.x, c.y, c.width, c.height)); 11866 FinishSwapBuffers(surface_->PostSubBuffer(c.x, c.y, c.width, c.height));
11853 } 11867 }
(...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after
11977 ca_layer_shared_state_->transform, image, contents_rect, 11991 ca_layer_shared_state_->transform, image, contents_rect,
11978 gfx::ToEnclosingRect(bounds_rect), c.background_color, c.edge_aa_mask, 11992 gfx::ToEnclosingRect(bounds_rect), c.background_color, c.edge_aa_mask,
11979 ca_layer_shared_state_->opacity, filter); 11993 ca_layer_shared_state_->opacity, filter);
11980 if (!surface_->ScheduleCALayer(params)) { 11994 if (!surface_->ScheduleCALayer(params)) {
11981 LOCAL_SET_GL_ERROR(GL_INVALID_OPERATION, "glScheduleCALayerCHROMIUM", 11995 LOCAL_SET_GL_ERROR(GL_INVALID_OPERATION, "glScheduleCALayerCHROMIUM",
11982 "failed to schedule CALayer"); 11996 "failed to schedule CALayer");
11983 } 11997 }
11984 return error::kNoError; 11998 return error::kNoError;
11985 } 11999 }
11986 12000
12001 error::Error GLES2DecoderImpl::HandleScheduleDCLayerSharedStateCHROMIUM(
12002 uint32_t immediate_data_size,
12003 const volatile void* cmd_data) {
12004 const volatile gles2::cmds::ScheduleDCLayerSharedStateCHROMIUM& c =
12005 *static_cast<
12006 const volatile gles2::cmds::ScheduleDCLayerSharedStateCHROMIUM*>(
12007 cmd_data);
12008
12009 const GLfloat* mem = GetSharedMemoryAs<const GLfloat*>(c.shm_id, c.shm_offset,
12010 20 * sizeof(GLfloat));
12011 if (!mem) {
12012 return error::kOutOfBounds;
12013 }
12014 gfx::RectF clip_rect(mem[0], mem[1], mem[2], mem[3]);
12015 gfx::Transform transform(mem[4], mem[8], mem[12], mem[16], mem[5], mem[9],
12016 mem[13], mem[17], mem[6], mem[10], mem[14], mem[18],
12017 mem[7], mem[11], mem[15], mem[19]);
12018 dc_layer_shared_state_.reset(new DCLayerSharedState);
12019 dc_layer_shared_state_->opacity = c.opacity;
12020 dc_layer_shared_state_->is_clipped = c.is_clipped ? true : false;
12021 dc_layer_shared_state_->clip_rect = gfx::ToEnclosingRect(clip_rect);
12022 dc_layer_shared_state_->z_order = c.z_order;
12023 dc_layer_shared_state_->transform = transform;
12024 return error::kNoError;
12025 }
12026
12027 error::Error GLES2DecoderImpl::HandleScheduleDCLayerCHROMIUM(
12028 uint32_t immediate_data_size,
12029 const volatile void* cmd_data) {
12030 const volatile gles2::cmds::ScheduleDCLayerCHROMIUM& c =
12031 *static_cast<const volatile gles2::cmds::ScheduleDCLayerCHROMIUM*>(
12032 cmd_data);
12033 GLuint filter = c.filter;
12034 if (filter != GL_NEAREST && filter != GL_LINEAR) {
12035 LOCAL_SET_GL_ERROR(GL_INVALID_VALUE, "glScheduleDCLayerCHROMIUM",
12036 "invalid filter");
12037 return error::kNoError;
12038 }
12039
12040 if (!dc_layer_shared_state_) {
12041 LOCAL_SET_GL_ERROR(
12042 GL_INVALID_OPERATION, "glScheduleDCLayerCHROMIUM",
12043 "glScheduleDCLayerSharedStateCHROMIUM has not been called");
12044 return error::kNoError;
12045 }
12046
12047 gl::GLImage* image = nullptr;
12048 GLuint contents_texture_id = c.contents_texture_id;
12049 if (contents_texture_id) {
12050 TextureRef* ref = texture_manager()->GetTexture(contents_texture_id);
12051 if (!ref) {
12052 LOCAL_SET_GL_ERROR(GL_INVALID_VALUE, "glScheduleDCLayerCHROMIUM",
12053 "unknown texture");
12054 return error::kNoError;
12055 }
12056 Texture::ImageState image_state;
12057 image = ref->texture()->GetLevelImage(ref->texture()->target(), 0,
12058 &image_state);
12059 if (!image) {
12060 LOCAL_SET_GL_ERROR(GL_INVALID_VALUE, "glScheduleDCLayerCHROMIUM",
12061 "unsupported texture format");
12062 return error::kNoError;
12063 }
12064 }
12065
12066 const GLfloat* mem = GetSharedMemoryAs<const GLfloat*>(c.shm_id, c.shm_offset,
12067 8 * sizeof(GLfloat));
12068 if (!mem) {
12069 return error::kOutOfBounds;
12070 }
12071 gfx::RectF contents_rect(mem[0], mem[1], mem[2], mem[3]);
12072 gfx::RectF bounds_rect(mem[4], mem[5], mem[6], mem[7]);
12073
12074 ui::DCRendererLayerParams params = ui::DCRendererLayerParams(
12075 dc_layer_shared_state_->is_clipped, dc_layer_shared_state_->clip_rect,
12076 dc_layer_shared_state_->z_order, dc_layer_shared_state_->transform, image,
12077 contents_rect, gfx::ToEnclosingRect(bounds_rect), c.background_color,
12078 c.edge_aa_mask, dc_layer_shared_state_->opacity, filter);
12079 if (!surface_->ScheduleDCLayer(params)) {
12080 LOCAL_SET_GL_ERROR(GL_INVALID_OPERATION, "glScheduleDCLayerCHROMIUM",
12081 "failed to schedule DCLayer");
12082 }
12083 return error::kNoError;
12084 }
12085
11987 void GLES2DecoderImpl::DoScheduleCALayerInUseQueryCHROMIUM( 12086 void GLES2DecoderImpl::DoScheduleCALayerInUseQueryCHROMIUM(
11988 GLsizei count, 12087 GLsizei count,
11989 const volatile GLuint* textures) { 12088 const volatile GLuint* textures) {
11990 std::vector<gl::GLSurface::CALayerInUseQuery> queries; 12089 std::vector<gl::GLSurface::CALayerInUseQuery> queries;
11991 queries.reserve(count); 12090 queries.reserve(count);
11992 for (GLsizei i = 0; i < count; ++i) { 12091 for (GLsizei i = 0; i < count; ++i) {
11993 gl::GLImage* image = nullptr; 12092 gl::GLImage* image = nullptr;
11994 GLuint texture_id = textures[i]; 12093 GLuint texture_id = textures[i];
11995 if (texture_id) { 12094 if (texture_id) {
11996 TextureRef* ref = texture_manager()->GetTexture(texture_id); 12095 TextureRef* ref = texture_manager()->GetTexture(texture_id);
(...skipping 3301 matching lines...) Expand 10 before | Expand all | Expand 10 after
15298 bool is_tracing; 15397 bool is_tracing;
15299 TRACE_EVENT_CATEGORY_GROUP_ENABLED(TRACE_DISABLED_BY_DEFAULT("gpu.debug"), 15398 TRACE_EVENT_CATEGORY_GROUP_ENABLED(TRACE_DISABLED_BY_DEFAULT("gpu.debug"),
15300 &is_tracing); 15399 &is_tracing);
15301 if (is_tracing) { 15400 if (is_tracing) {
15302 ScopedFramebufferBinder binder(this, GetBoundDrawFramebufferServiceId()); 15401 ScopedFramebufferBinder binder(this, GetBoundDrawFramebufferServiceId());
15303 gpu_state_tracer_->TakeSnapshotWithCurrentFramebuffer( 15402 gpu_state_tracer_->TakeSnapshotWithCurrentFramebuffer(
15304 is_offscreen ? offscreen_size_ : surface_->GetSize()); 15403 is_offscreen ? offscreen_size_ : surface_->GetSize());
15305 } 15404 }
15306 15405
15307 ClearScheduleCALayerState(); 15406 ClearScheduleCALayerState();
15407 ClearScheduleDCLayerState();
15308 15408
15309 // If offscreen then don't actually SwapBuffers to the display. Just copy 15409 // If offscreen then don't actually SwapBuffers to the display. Just copy
15310 // the rendered frame to another frame buffer. 15410 // the rendered frame to another frame buffer.
15311 if (is_offscreen) { 15411 if (is_offscreen) {
15312 TRACE_EVENT2("gpu", "Offscreen", 15412 TRACE_EVENT2("gpu", "Offscreen",
15313 "width", offscreen_size_.width(), "height", offscreen_size_.height()); 15413 "width", offscreen_size_.width(), "height", offscreen_size_.height());
15314 if (offscreen_size_ != offscreen_saved_color_texture_->size()) { 15414 if (offscreen_size_ != offscreen_saved_color_texture_->size()) {
15315 // Workaround for NVIDIA driver bug on OS X; crbug.com/89557, 15415 // Workaround for NVIDIA driver bug on OS X; crbug.com/89557,
15316 // crbug.com/94163. TODO(kbr): figure out reproduction so Apple will 15416 // crbug.com/94163. TODO(kbr): figure out reproduction so Apple will
15317 // fix this. 15417 // fix this.
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after
15418 } 15518 }
15419 15519
15420 void GLES2DecoderImpl::DoCommitOverlayPlanes() { 15520 void GLES2DecoderImpl::DoCommitOverlayPlanes() {
15421 TRACE_EVENT0("gpu", "GLES2DecoderImpl::DoCommitOverlayPlanes"); 15521 TRACE_EVENT0("gpu", "GLES2DecoderImpl::DoCommitOverlayPlanes");
15422 if (!supports_commit_overlay_planes_) { 15522 if (!supports_commit_overlay_planes_) {
15423 LOCAL_SET_GL_ERROR(GL_INVALID_OPERATION, "glCommitOverlayPlanes", 15523 LOCAL_SET_GL_ERROR(GL_INVALID_OPERATION, "glCommitOverlayPlanes",
15424 "command not supported by surface"); 15524 "command not supported by surface");
15425 return; 15525 return;
15426 } 15526 }
15427 ClearScheduleCALayerState(); 15527 ClearScheduleCALayerState();
15528 ClearScheduleDCLayerState();
15428 if (supports_async_swap_) { 15529 if (supports_async_swap_) {
15429 surface_->CommitOverlayPlanesAsync(base::Bind( 15530 surface_->CommitOverlayPlanesAsync(base::Bind(
15430 &GLES2DecoderImpl::FinishSwapBuffers, base::AsWeakPtr(this))); 15531 &GLES2DecoderImpl::FinishSwapBuffers, base::AsWeakPtr(this)));
15431 } else { 15532 } else {
15432 FinishSwapBuffers(surface_->CommitOverlayPlanes()); 15533 FinishSwapBuffers(surface_->CommitOverlayPlanes());
15433 } 15534 }
15434 } 15535 }
15435 15536
15436 void GLES2DecoderImpl::DoSwapInterval(int interval) { 15537 void GLES2DecoderImpl::DoSwapInterval(int interval) {
15437 context_->SetSwapInterval(interval); 15538 context_->SetSwapInterval(interval);
(...skipping 3756 matching lines...) Expand 10 before | Expand all | Expand 10 after
19194 19295
19195 bool GLES2DecoderImpl::ChromiumImageNeedsRGBEmulation() { 19296 bool GLES2DecoderImpl::ChromiumImageNeedsRGBEmulation() {
19196 gpu::ImageFactory* factory = GetContextGroup()->image_factory(); 19297 gpu::ImageFactory* factory = GetContextGroup()->image_factory();
19197 return factory ? !factory->SupportsFormatRGB() : false; 19298 return factory ? !factory->SupportsFormatRGB() : false;
19198 } 19299 }
19199 19300
19200 void GLES2DecoderImpl::ClearScheduleCALayerState() { 19301 void GLES2DecoderImpl::ClearScheduleCALayerState() {
19201 ca_layer_shared_state_.reset(); 19302 ca_layer_shared_state_.reset();
19202 } 19303 }
19203 19304
19305 void GLES2DecoderImpl::ClearScheduleDCLayerState() {
19306 dc_layer_shared_state_.reset();
19307 }
19308
19204 void GLES2DecoderImpl::ClearFramebufferForWorkaround(GLbitfield mask) { 19309 void GLES2DecoderImpl::ClearFramebufferForWorkaround(GLbitfield mask) {
19205 ScopedGLErrorSuppressor suppressor("GLES2DecoderImpl::ClearWorkaround", 19310 ScopedGLErrorSuppressor suppressor("GLES2DecoderImpl::ClearWorkaround",
19206 GetErrorState()); 19311 GetErrorState());
19207 clear_framebuffer_blit_->ClearFramebuffer( 19312 clear_framebuffer_blit_->ClearFramebuffer(
19208 this, GetBoundReadFramebufferSize(), mask, state_.color_clear_red, 19313 this, GetBoundReadFramebufferSize(), mask, state_.color_clear_red,
19209 state_.color_clear_green, state_.color_clear_blue, 19314 state_.color_clear_green, state_.color_clear_blue,
19210 state_.color_clear_alpha, state_.depth_clear, state_.stencil_clear); 19315 state_.color_clear_alpha, state_.depth_clear, state_.stencil_clear);
19211 } 19316 }
19212 19317
19213 error::Error GLES2DecoderImpl::HandleBindFragmentInputLocationCHROMIUMBucket( 19318 error::Error GLES2DecoderImpl::HandleBindFragmentInputLocationCHROMIUMBucket(
(...skipping 154 matching lines...) Expand 10 before | Expand all | Expand 10 after
19368 } 19473 }
19369 19474
19370 // Include the auto-generated part of this file. We split this because it means 19475 // Include the auto-generated part of this file. We split this because it means
19371 // we can easily edit the non-auto generated parts right here in this file 19476 // we can easily edit the non-auto generated parts right here in this file
19372 // instead of having to edit some template or the code generator. 19477 // instead of having to edit some template or the code generator.
19373 #include "base/macros.h" 19478 #include "base/macros.h"
19374 #include "gpu/command_buffer/service/gles2_cmd_decoder_autogen.h" 19479 #include "gpu/command_buffer/service/gles2_cmd_decoder_autogen.h"
19375 19480
19376 } // namespace gles2 19481 } // namespace gles2
19377 } // namespace gpu 19482 } // namespace gpu
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698