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

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

Issue 15798014: Replace context parenting by sharing through mailboxes (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: add test Created 7 years, 6 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 | Annotate | Revision Log
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 <stdio.h> 7 #include <stdio.h>
8 8
9 #include <algorithm> 9 #include <algorithm>
10 #include <list> 10 #include <list>
(...skipping 11 matching lines...) Expand all
22 #include "base/mac/scoped_cftyperef.h" 22 #include "base/mac/scoped_cftyperef.h"
23 #endif 23 #endif
24 #include "base/memory/scoped_ptr.h" 24 #include "base/memory/scoped_ptr.h"
25 #include "base/string_number_conversions.h" 25 #include "base/string_number_conversions.h"
26 #include "build/build_config.h" 26 #include "build/build_config.h"
27 #define GLES2_GPU_SERVICE 1 27 #define GLES2_GPU_SERVICE 1
28 #include "gpu/command_buffer/common/gles2_cmd_format.h" 28 #include "gpu/command_buffer/common/gles2_cmd_format.h"
29 #include "gpu/command_buffer/common/gles2_cmd_utils.h" 29 #include "gpu/command_buffer/common/gles2_cmd_utils.h"
30 #include "gpu/command_buffer/common/debug_marker_manager.h" 30 #include "gpu/command_buffer/common/debug_marker_manager.h"
31 #include "gpu/command_buffer/common/id_allocator.h" 31 #include "gpu/command_buffer/common/id_allocator.h"
32 #include "gpu/command_buffer/common/mailbox.h"
32 #include "gpu/command_buffer/service/buffer_manager.h" 33 #include "gpu/command_buffer/service/buffer_manager.h"
33 #include "gpu/command_buffer/service/cmd_buffer_engine.h" 34 #include "gpu/command_buffer/service/cmd_buffer_engine.h"
34 #include "gpu/command_buffer/service/context_group.h" 35 #include "gpu/command_buffer/service/context_group.h"
35 #include "gpu/command_buffer/service/context_state.h" 36 #include "gpu/command_buffer/service/context_state.h"
36 #include "gpu/command_buffer/service/error_state.h" 37 #include "gpu/command_buffer/service/error_state.h"
37 #include "gpu/command_buffer/service/feature_info.h" 38 #include "gpu/command_buffer/service/feature_info.h"
38 #include "gpu/command_buffer/service/framebuffer_manager.h" 39 #include "gpu/command_buffer/service/framebuffer_manager.h"
39 #include "gpu/command_buffer/service/gl_utils.h" 40 #include "gpu/command_buffer/service/gl_utils.h"
40 #include "gpu/command_buffer/service/gles2_cmd_copy_texture_chromium.h" 41 #include "gpu/command_buffer/service/gles2_cmd_copy_texture_chromium.h"
41 #include "gpu/command_buffer/service/gles2_cmd_validation.h" 42 #include "gpu/command_buffer/service/gles2_cmd_validation.h"
(...skipping 463 matching lines...) Expand 10 before | Expand all | Expand 10 after
505 virtual bool Initialize(const scoped_refptr<gfx::GLSurface>& surface, 506 virtual bool Initialize(const scoped_refptr<gfx::GLSurface>& surface,
506 const scoped_refptr<gfx::GLContext>& context, 507 const scoped_refptr<gfx::GLContext>& context,
507 bool offscreen, 508 bool offscreen,
508 const gfx::Size& size, 509 const gfx::Size& size,
509 const DisallowedFeatures& disallowed_features, 510 const DisallowedFeatures& disallowed_features,
510 const char* allowed_extensions, 511 const char* allowed_extensions,
511 const std::vector<int32>& attribs) OVERRIDE; 512 const std::vector<int32>& attribs) OVERRIDE;
512 virtual void Destroy(bool have_context) OVERRIDE; 513 virtual void Destroy(bool have_context) OVERRIDE;
513 virtual void SetSurface( 514 virtual void SetSurface(
514 const scoped_refptr<gfx::GLSurface>& surface) OVERRIDE; 515 const scoped_refptr<gfx::GLSurface>& surface) OVERRIDE;
515 virtual bool SetParent(GLES2Decoder* parent_decoder, 516 virtual bool ProduceFrontBuffer(const Mailbox& mailbox) OVERRIDE;
516 uint32 parent_texture_id) OVERRIDE;
517 virtual bool ResizeOffscreenFrameBuffer(const gfx::Size& size) OVERRIDE; 517 virtual bool ResizeOffscreenFrameBuffer(const gfx::Size& size) OVERRIDE;
518 void UpdateParentTextureInfo(); 518 void UpdateParentTextureInfo();
519 virtual bool MakeCurrent() OVERRIDE; 519 virtual bool MakeCurrent() OVERRIDE;
520 virtual void ReleaseCurrent() OVERRIDE; 520 virtual void ReleaseCurrent() OVERRIDE;
521 virtual GLES2Util* GetGLES2Util() OVERRIDE { return &util_; } 521 virtual GLES2Util* GetGLES2Util() OVERRIDE { return &util_; }
522 virtual gfx::GLContext* GetGLContext() OVERRIDE { return context_.get(); } 522 virtual gfx::GLContext* GetGLContext() OVERRIDE { return context_.get(); }
523 virtual ContextGroup* GetContextGroup() OVERRIDE { return group_.get(); } 523 virtual ContextGroup* GetContextGroup() OVERRIDE { return group_.get(); }
524 virtual void RestoreState() const OVERRIDE; 524 virtual void RestoreState() const OVERRIDE;
525 525
526 virtual void RestoreActiveTexture() const OVERRIDE { 526 virtual void RestoreActiveTexture() const OVERRIDE {
(...skipping 1022 matching lines...) Expand 10 before | Expand all | Expand 10 after
1549 1549
1550 // The ContextGroup for this decoder uses to track resources. 1550 // The ContextGroup for this decoder uses to track resources.
1551 scoped_refptr<ContextGroup> group_; 1551 scoped_refptr<ContextGroup> group_;
1552 1552
1553 DebugMarkerManager debug_marker_manager_; 1553 DebugMarkerManager debug_marker_manager_;
1554 Logger logger_; 1554 Logger logger_;
1555 1555
1556 // All the state for this context. 1556 // All the state for this context.
1557 ContextState state_; 1557 ContextState state_;
1558 1558
1559 // A parent decoder can access this decoders saved offscreen frame buffer.
1560 // The parent pointer is reset if the parent is destroyed.
1561 base::WeakPtr<GLES2DecoderImpl> parent_;
1562
1563 // Current width and height of the offscreen frame buffer. 1559 // Current width and height of the offscreen frame buffer.
1564 gfx::Size offscreen_size_; 1560 gfx::Size offscreen_size_;
1565 1561
1566 // Util to help with GL. 1562 // Util to help with GL.
1567 GLES2Util util_; 1563 GLES2Util util_;
1568 1564
1569 // unpack flip y as last set by glPixelStorei 1565 // unpack flip y as last set by glPixelStorei
1570 bool unpack_flip_y_; 1566 bool unpack_flip_y_;
1571 1567
1572 // unpack (un)premultiply alpha as last set by glPixelStorei 1568 // unpack (un)premultiply alpha as last set by glPixelStorei
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after
1680 bool compile_shader_always_succeeds_; 1676 bool compile_shader_always_succeeds_;
1681 1677
1682 // Log extra info. 1678 // Log extra info.
1683 bool service_logging_; 1679 bool service_logging_;
1684 1680
1685 #if defined(OS_MACOSX) 1681 #if defined(OS_MACOSX)
1686 typedef std::map<GLuint, CFTypeRef> TextureToIOSurfaceMap; 1682 typedef std::map<GLuint, CFTypeRef> TextureToIOSurfaceMap;
1687 TextureToIOSurfaceMap texture_to_io_surface_map_; 1683 TextureToIOSurfaceMap texture_to_io_surface_map_;
1688 #endif 1684 #endif
1689 1685
1690 typedef std::vector<GLES2DecoderImpl*> ChildList;
1691 ChildList children_;
1692
1693 scoped_ptr<CopyTextureCHROMIUMResourceManager> copy_texture_CHROMIUM_; 1686 scoped_ptr<CopyTextureCHROMIUMResourceManager> copy_texture_CHROMIUM_;
1694 1687
1695 // Cached values of the currently assigned viewport dimensions. 1688 // Cached values of the currently assigned viewport dimensions.
1696 GLsizei viewport_max_width_; 1689 GLsizei viewport_max_width_;
1697 GLsizei viewport_max_height_; 1690 GLsizei viewport_max_height_;
1698 1691
1699 // Command buffer stats. 1692 // Command buffer stats.
1700 int texture_upload_count_; 1693 int texture_upload_count_;
1701 base::TimeDelta total_texture_upload_time_; 1694 base::TimeDelta total_texture_upload_time_;
1702 base::TimeDelta total_processing_commands_time_; 1695 base::TimeDelta total_processing_commands_time_;
(...skipping 1266 matching lines...) Expand 10 before | Expand all | Expand 10 after
2969 if (framebuffer != NULL) { 2962 if (framebuffer != NULL) {
2970 return framebuffer->GetColorAttachmentFormat(); 2963 return framebuffer->GetColorAttachmentFormat();
2971 } else if (offscreen_target_frame_buffer_.get()) { 2964 } else if (offscreen_target_frame_buffer_.get()) {
2972 return offscreen_target_color_format_; 2965 return offscreen_target_color_format_;
2973 } else { 2966 } else {
2974 return back_buffer_color_format_; 2967 return back_buffer_color_format_;
2975 } 2968 }
2976 } 2969 }
2977 2970
2978 void GLES2DecoderImpl::UpdateParentTextureInfo() { 2971 void GLES2DecoderImpl::UpdateParentTextureInfo() {
2979 if (parent_) { 2972 if (!offscreen_saved_color_texture_info_.get())
2980 // Update the info about the offscreen saved color texture in the parent. 2973 return;
2981 // The reference to the parent is a weak pointer and will become null if the 2974 GLenum target = offscreen_saved_color_texture_info_->texture()->target();
2982 // parent is later destroyed. 2975 glBindTexture(target, offscreen_saved_color_texture_info_->service_id());
2983 GLenum target = offscreen_saved_color_texture_info_->texture()->target(); 2976 texture_manager()->SetLevelInfo(
2984 TextureManager* parent_texture_manager = parent_->texture_manager(); 2977 offscreen_saved_color_texture_info_.get(),
2985 glBindTexture(target, offscreen_saved_color_texture_info_->service_id()); 2978 GL_TEXTURE_2D,
2986 parent_texture_manager->SetLevelInfo( 2979 0, // level
2987 offscreen_saved_color_texture_info_.get(), 2980 GL_RGBA,
2988 GL_TEXTURE_2D, 2981 offscreen_size_.width(),
2989 0, // level 2982 offscreen_size_.height(),
2990 GL_RGBA, 2983 1, // depth
2991 offscreen_size_.width(), 2984 0, // border
2992 offscreen_size_.height(), 2985 GL_RGBA,
2993 1, // depth 2986 GL_UNSIGNED_BYTE,
2994 0, // border 2987 true);
2995 GL_RGBA, 2988 texture_manager()->SetParameter(
2996 GL_UNSIGNED_BYTE, 2989 "UpdateParentTextureInfo",
2997 true); 2990 GetErrorState(),
2998 parent_texture_manager->SetParameter( 2991 offscreen_saved_color_texture_info_.get(),
2999 "UpdateParentTextureInfo", 2992 GL_TEXTURE_MAG_FILTER,
3000 GetErrorState(), 2993 GL_NEAREST);
3001 offscreen_saved_color_texture_info_.get(), 2994 texture_manager()->SetParameter(
3002 GL_TEXTURE_MAG_FILTER, 2995 "UpdateParentTextureInfo",
3003 GL_NEAREST); 2996 GetErrorState(),
3004 parent_texture_manager->SetParameter( 2997 offscreen_saved_color_texture_info_.get(),
3005 "UpdateParentTextureInfo", 2998 GL_TEXTURE_MIN_FILTER,
3006 GetErrorState(), 2999 GL_NEAREST);
3007 offscreen_saved_color_texture_info_.get(), 3000 texture_manager()->SetParameter(
3008 GL_TEXTURE_MIN_FILTER, 3001 "UpdateParentTextureInfo",
3009 GL_NEAREST); 3002 GetErrorState(),
3010 parent_texture_manager->SetParameter( 3003 offscreen_saved_color_texture_info_.get(),
3011 "UpdateParentTextureInfo", 3004 GL_TEXTURE_WRAP_S,
3012 GetErrorState(), 3005 GL_CLAMP_TO_EDGE);
3013 offscreen_saved_color_texture_info_.get(), 3006 texture_manager()->SetParameter(
3014 GL_TEXTURE_WRAP_S, 3007 "UpdateParentTextureInfo",
3015 GL_CLAMP_TO_EDGE); 3008 GetErrorState(),
3016 parent_texture_manager->SetParameter( 3009 offscreen_saved_color_texture_info_.get(),
3017 "UpdateParentTextureInfo", 3010 GL_TEXTURE_WRAP_T,
3018 GetErrorState(), 3011 GL_CLAMP_TO_EDGE);
3019 offscreen_saved_color_texture_info_.get(), 3012 TextureRef* texture_ref = GetTextureInfoForTarget(target);
3020 GL_TEXTURE_WRAP_T, 3013 glBindTexture(target, texture_ref ? texture_ref->service_id() : 0);
3021 GL_CLAMP_TO_EDGE);
3022 TextureRef* texture_ref = GetTextureInfoForTarget(target);
3023 glBindTexture(target, texture_ref ? texture_ref->service_id() : 0);
3024 } else {
3025 offscreen_saved_color_texture_info_ = NULL;
3026 }
3027 } 3014 }
3028 3015
3029 void GLES2DecoderImpl::SetResizeCallback( 3016 void GLES2DecoderImpl::SetResizeCallback(
3030 const base::Callback<void(gfx::Size, float)>& callback) { 3017 const base::Callback<void(gfx::Size, float)>& callback) {
3031 resize_callback_ = callback; 3018 resize_callback_ = callback;
3032 } 3019 }
3033 3020
3034 Logger* GLES2DecoderImpl::GetLogger() { 3021 Logger* GLES2DecoderImpl::GetLogger() {
3035 return &logger_; 3022 return &logger_;
3036 } 3023 }
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
3099 void GLES2DecoderImpl::AddProcessingCommandsTime(base::TimeDelta time) { 3086 void GLES2DecoderImpl::AddProcessingCommandsTime(base::TimeDelta time) {
3100 total_processing_commands_time_ += time; 3087 total_processing_commands_time_ += time;
3101 } 3088 }
3102 3089
3103 void GLES2DecoderImpl::Destroy(bool have_context) { 3090 void GLES2DecoderImpl::Destroy(bool have_context) {
3104 if (!initialized()) 3091 if (!initialized())
3105 return; 3092 return;
3106 3093
3107 DCHECK(!have_context || context_->IsCurrent(NULL)); 3094 DCHECK(!have_context || context_->IsCurrent(NULL));
3108 3095
3109 ChildList children = children_;
3110 for (ChildList::iterator it = children.begin(); it != children.end(); ++it)
3111 (*it)->SetParent(NULL, 0);
3112 DCHECK(children_.empty());
3113 SetParent(NULL, 0);
3114
3115 // Unbind everything. 3096 // Unbind everything.
3116 state_.vertex_attrib_manager = NULL; 3097 state_.vertex_attrib_manager = NULL;
3117 default_vertex_attrib_manager_ = NULL; 3098 default_vertex_attrib_manager_ = NULL;
3118 state_.texture_units.clear(); 3099 state_.texture_units.clear();
3119 state_.bound_array_buffer = NULL; 3100 state_.bound_array_buffer = NULL;
3120 state_.current_query = NULL; 3101 state_.current_query = NULL;
3121 state_.current_program = NULL; 3102 state_.current_program = NULL;
3122 state_.bound_read_framebuffer = NULL; 3103 state_.bound_read_framebuffer = NULL;
3123 state_.bound_draw_framebuffer = NULL; 3104 state_.bound_draw_framebuffer = NULL;
3124 state_.bound_renderbuffer = NULL; 3105 state_.bound_renderbuffer = NULL;
3125 3106
3107 if (offscreen_saved_color_texture_info_) {
3108 DCHECK(offscreen_target_color_texture_);
3109 DCHECK_EQ(offscreen_saved_color_texture_info_->service_id(),
3110 offscreen_saved_color_texture_->id());
3111 offscreen_saved_color_texture_->Invalidate();
3112 offscreen_saved_color_texture_info_ = NULL;
3113 }
3126 if (have_context) { 3114 if (have_context) {
3127 if (copy_texture_CHROMIUM_.get()) { 3115 if (copy_texture_CHROMIUM_.get()) {
3128 copy_texture_CHROMIUM_->Destroy(); 3116 copy_texture_CHROMIUM_->Destroy();
3129 copy_texture_CHROMIUM_.reset(); 3117 copy_texture_CHROMIUM_.reset();
3130 } 3118 }
3131 3119
3132 if (state_.current_program.get()) { 3120 if (state_.current_program.get()) {
3133 program_manager()->UnuseProgram(shader_manager(), 3121 program_manager()->UnuseProgram(shader_manager(),
3134 state_.current_program.get()); 3122 state_.current_program.get());
3135 state_.current_program = NULL; 3123 state_.current_program = NULL;
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after
3226 } 3214 }
3227 3215
3228 void GLES2DecoderImpl::SetSurface( 3216 void GLES2DecoderImpl::SetSurface(
3229 const scoped_refptr<gfx::GLSurface>& surface) { 3217 const scoped_refptr<gfx::GLSurface>& surface) {
3230 DCHECK(context_->IsCurrent(NULL)); 3218 DCHECK(context_->IsCurrent(NULL));
3231 DCHECK(surface_.get()); 3219 DCHECK(surface_.get());
3232 surface_ = surface; 3220 surface_ = surface;
3233 RestoreCurrentFramebufferBindings(); 3221 RestoreCurrentFramebufferBindings();
3234 } 3222 }
3235 3223
3236 bool GLES2DecoderImpl::SetParent(GLES2Decoder* new_parent, 3224 bool GLES2DecoderImpl::ProduceFrontBuffer(const Mailbox& mailbox) {
3237 uint32 new_parent_texture_id) {
3238 if (!offscreen_saved_color_texture_.get()) 3225 if (!offscreen_saved_color_texture_.get())
3239 return false; 3226 return false;
3240 3227 if (!offscreen_saved_color_texture_info_.get()) {
3241 // Remove the saved frame buffer mapping from the parent decoder. The 3228 GLuint service_id = offscreen_saved_color_texture_->id();
3242 // parent pointer is a weak pointer so it will be null if the parent has 3229 offscreen_saved_color_texture_info_ = CreateTexture(0, service_id);
3243 // already been destroyed. 3230 texture_manager()->SetTarget(offscreen_saved_color_texture_info_.get(),
3244 if (parent_) { 3231 GL_TEXTURE_2D);
3245 ChildList::iterator it = std::find( 3232 UpdateParentTextureInfo();
3246 parent_->children_.begin(),
3247 parent_->children_.end(),
3248 this);
3249 DCHECK(it != parent_->children_.end());
3250 parent_->children_.erase(it);
3251 // First check the texture has been mapped into the parent. This might not
3252 // be the case if initialization failed midway through.
3253 if (offscreen_saved_color_texture_info_.get() &&
3254 offscreen_saved_color_texture_info_->client_id()) {
3255 parent_->texture_manager()->RemoveTexture(
3256 offscreen_saved_color_texture_info_->client_id());
3257 }
3258 } 3233 }
3259 3234 gpu::gles2::MailboxName name;
3260 GLES2DecoderImpl* new_parent_impl = static_cast<GLES2DecoderImpl*>( 3235 memcpy(name.key, mailbox.name, sizeof(mailbox.name));
3261 new_parent); 3236 return mailbox_manager()->ProduceTexture(
3262 if (new_parent_impl) { 3237 GL_TEXTURE_2D, name, offscreen_saved_color_texture_info_->texture());
3263 #ifndef NDEBUG
3264 ChildList::iterator it = std::find(
3265 new_parent_impl->children_.begin(),
3266 new_parent_impl->children_.end(),
3267 this);
3268 DCHECK(it == new_parent_impl->children_.end());
3269 #endif
3270 new_parent_impl->children_.push_back(this);
3271 // Map the ID of the saved offscreen texture into the parent so that
3272 // it can reference it.
3273 GLuint service_id = offscreen_saved_color_texture_->id();
3274
3275 // Replace texture info when ID is already in use by parent.
3276 if (new_parent_impl->texture_manager()->GetTexture(
3277 new_parent_texture_id))
3278 new_parent_impl->texture_manager()->RemoveTexture(
3279 new_parent_texture_id);
3280
3281 offscreen_saved_color_texture_info_ =
3282 new_parent_impl->CreateTexture(new_parent_texture_id, service_id);
3283 offscreen_saved_color_texture_info_->texture()->SetNotOwned();
3284 new_parent_impl->texture_manager()
3285 ->SetTarget(offscreen_saved_color_texture_info_.get(), GL_TEXTURE_2D);
3286
3287 parent_ = base::AsWeakPtr<GLES2DecoderImpl>(new_parent_impl);
3288
3289 UpdateParentTextureInfo();
3290 } else {
3291 parent_.reset();
3292 offscreen_saved_color_texture_info_ = NULL;
3293 }
3294
3295 return true;
3296 } 3238 }
3297 3239
3298 size_t GLES2DecoderImpl::GetBackbufferMemoryTotal() { 3240 size_t GLES2DecoderImpl::GetBackbufferMemoryTotal() {
3299 size_t total = 0; 3241 size_t total = 0;
3300 if (offscreen_target_frame_buffer_.get()) { 3242 if (offscreen_target_frame_buffer_.get()) {
3301 if (offscreen_target_color_texture_.get()) { 3243 if (offscreen_target_color_texture_.get()) {
3302 total += offscreen_target_color_texture_->estimated_size(); 3244 total += offscreen_target_color_texture_->estimated_size();
3303 } 3245 }
3304 if (offscreen_target_color_render_buffer_.get()) { 3246 if (offscreen_target_color_render_buffer_.get()) {
3305 total += offscreen_target_color_render_buffer_->estimated_size(); 3247 total += offscreen_target_color_render_buffer_->estimated_size();
(...skipping 5711 matching lines...) Expand 10 before | Expand all | Expand 10 after
9017 8959
9018 void GLES2DecoderImpl::LoseContext(uint32 reset_status) { 8960 void GLES2DecoderImpl::LoseContext(uint32 reset_status) {
9019 // Only loses the context once. 8961 // Only loses the context once.
9020 if (reset_status_ != GL_NO_ERROR) { 8962 if (reset_status_ != GL_NO_ERROR) {
9021 return; 8963 return;
9022 } 8964 }
9023 8965
9024 // Marks this context as lost. 8966 // Marks this context as lost.
9025 reset_status_ = reset_status; 8967 reset_status_ = reset_status;
9026 current_decoder_error_ = error::kLostContext; 8968 current_decoder_error_ = error::kLostContext;
9027
9028 // Loses the parent's context.
9029 if (parent_) {
9030 parent_->LoseContext(reset_status);
9031 }
9032
9033 // Loses any child contexts.
9034 for (ChildList::iterator it = children_.begin();
9035 it != children_.end();
9036 ++it) {
9037 (*it)->LoseContext(reset_status);
9038 }
9039 } 8969 }
9040 8970
9041 error::Error GLES2DecoderImpl::HandleLoseContextCHROMIUM( 8971 error::Error GLES2DecoderImpl::HandleLoseContextCHROMIUM(
9042 uint32 immediate_data_size, const cmds::LoseContextCHROMIUM& c) { 8972 uint32 immediate_data_size, const cmds::LoseContextCHROMIUM& c) {
9043 GLenum current = static_cast<GLenum>(c.current); 8973 GLenum current = static_cast<GLenum>(c.current);
9044 GLenum other = static_cast<GLenum>(c.other); 8974 GLenum other = static_cast<GLenum>(c.other);
9045 if (!validators_->reset_status.IsValid(current)) { 8975 if (!validators_->reset_status.IsValid(current)) {
9046 LOCAL_SET_GL_ERROR_INVALID_ENUM( 8976 LOCAL_SET_GL_ERROR_INVALID_ENUM(
9047 "glLoseContextCHROMIUM", current, "current"); 8977 "glLoseContextCHROMIUM", current, "current");
9048 } 8978 }
(...skipping 1305 matching lines...) Expand 10 before | Expand all | Expand 10 after
10354 return error::kNoError; 10284 return error::kNoError;
10355 } 10285 }
10356 10286
10357 // Include the auto-generated part of this file. We split this because it means 10287 // Include the auto-generated part of this file. We split this because it means
10358 // we can easily edit the non-auto generated parts right here in this file 10288 // we can easily edit the non-auto generated parts right here in this file
10359 // instead of having to edit some template or the code generator. 10289 // instead of having to edit some template or the code generator.
10360 #include "gpu/command_buffer/service/gles2_cmd_decoder_autogen.h" 10290 #include "gpu/command_buffer/service/gles2_cmd_decoder_autogen.h"
10361 10291
10362 } // namespace gles2 10292 } // namespace gles2
10363 } // namespace gpu 10293 } // namespace gpu
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698