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

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

Issue 2542343003: Prep work for adding command buffer support for EXT_sRGB_write_control (Closed)
Patch Set: Created 4 years 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/context_state.h" 5 #include "gpu/command_buffer/service/context_state.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include <cmath> 9 #include <cmath>
10 10
(...skipping 203 matching lines...) Expand 10 before | Expand all | Expand 10 after
214 } 214 }
215 215
216 ContextState::ContextState(FeatureInfo* feature_info, 216 ContextState::ContextState(FeatureInfo* feature_info,
217 ErrorStateClient* error_state_client, 217 ErrorStateClient* error_state_client,
218 Logger* logger) 218 Logger* logger)
219 : active_texture_unit(0), 219 : active_texture_unit(0),
220 bound_renderbuffer_valid(false), 220 bound_renderbuffer_valid(false),
221 pack_reverse_row_order(false), 221 pack_reverse_row_order(false),
222 ignore_cached_state(false), 222 ignore_cached_state(false),
223 fbo_binding_for_scissor_workaround_dirty(false), 223 fbo_binding_for_scissor_workaround_dirty(false),
224 framebuffer_srgb_(false),
225 feature_info_(feature_info), 224 feature_info_(feature_info),
226 error_state_(ErrorState::Create(error_state_client, logger)) { 225 error_state_(ErrorState::Create(error_state_client, logger)) {
227 Initialize(); 226 Initialize();
228 } 227 }
229 228
230 ContextState::~ContextState() { 229 ContextState::~ContextState() {
231 } 230 }
232 231
233 void ContextState::SetLineWidthBounds(GLfloat min, GLfloat max) { 232 void ContextState::SetLineWidthBounds(GLfloat min, GLfloat max) {
234 line_width_min_ = min; 233 line_width_min_ = min;
(...skipping 263 matching lines...) Expand 10 before | Expand all | Expand 10 after
498 497
499 void ContextState::RestoreState(const ContextState* prev_state) { 498 void ContextState::RestoreState(const ContextState* prev_state) {
500 RestoreAllTextureUnitBindings(prev_state); 499 RestoreAllTextureUnitBindings(prev_state);
501 RestoreVertexAttribs(); 500 RestoreVertexAttribs();
502 RestoreBufferBindings(); 501 RestoreBufferBindings();
503 RestoreRenderbufferBindings(); 502 RestoreRenderbufferBindings();
504 RestoreProgramSettings(prev_state, true); 503 RestoreProgramSettings(prev_state, true);
505 RestoreIndexedUniformBufferBindings(prev_state); 504 RestoreIndexedUniformBufferBindings(prev_state);
506 RestoreGlobalState(prev_state); 505 RestoreGlobalState(prev_state);
507 506
508 if (!prev_state) { 507 // FRAMEBUFFER_SRGB will be restored lazily at render time.
509 if (feature_info_->feature_flags().desktop_srgb_support) { 508 framebuffer_srgb_valid_ = false;
510 framebuffer_srgb_ = false;
511 glDisable(GL_FRAMEBUFFER_SRGB);
512 }
513 } else if (framebuffer_srgb_ != prev_state->framebuffer_srgb_) {
514 // FRAMEBUFFER_SRGB will be restored lazily at render time.
515 framebuffer_srgb_ = prev_state->framebuffer_srgb_;
516 }
517 } 509 }
518 510
519 ErrorState* ContextState::GetErrorState() { 511 ErrorState* ContextState::GetErrorState() {
520 return error_state_.get(); 512 return error_state_.get();
521 } 513 }
522 514
523 void ContextState::EnableDisable(GLenum pname, bool enable) const { 515 void ContextState::EnableDisable(GLenum pname, bool enable) const {
524 if (pname == GL_PRIMITIVE_RESTART_FIXED_INDEX && 516 if (pname == GL_PRIMITIVE_RESTART_FIXED_INDEX &&
525 feature_info_->feature_flags().emulate_primitive_restart_fixed_index) { 517 feature_info_->feature_flags().emulate_primitive_restart_fixed_index) {
526 // GLES2DecoderImpl::DoDrawElements can handle this situation 518 // GLES2DecoderImpl::DoDrawElements can handle this situation
(...skipping 172 matching lines...) Expand 10 before | Expand all | Expand 10 after
699 PixelStoreParams params; 691 PixelStoreParams params;
700 params.alignment = unpack_alignment; 692 params.alignment = unpack_alignment;
701 params.row_length = unpack_row_length; 693 params.row_length = unpack_row_length;
702 if (dimension == k3D) { 694 if (dimension == k3D) {
703 params.image_height = unpack_image_height; 695 params.image_height = unpack_image_height;
704 } 696 }
705 return params; 697 return params;
706 } 698 }
707 699
708 void ContextState::EnableDisableFramebufferSRGB(bool enable) { 700 void ContextState::EnableDisableFramebufferSRGB(bool enable) {
709 if (framebuffer_srgb_ == enable) 701 if (framebuffer_srgb_valid_ && framebuffer_srgb_ == enable)
710 return; 702 return;
711 EnableDisable(GL_FRAMEBUFFER_SRGB, enable); 703 EnableDisable(GL_FRAMEBUFFER_SRGB, enable);
712 framebuffer_srgb_ = enable; 704 framebuffer_srgb_ = enable;
705 framebuffer_srgb_valid_ = true;
713 } 706 }
714 707
715 void ContextState::InitStateManual(const ContextState*) const { 708 void ContextState::InitStateManual(const ContextState*) const {
716 // Here we always reset the states whether it's different from previous ones. 709 // Here we always reset the states whether it's different from previous ones.
717 // We have very limited states here; also, once we switch to MANGLE, MANGLE 710 // We have very limited states here; also, once we switch to MANGLE, MANGLE
718 // will opmitize this. 711 // will opmitize this.
719 UpdatePackParameters(); 712 UpdatePackParameters();
720 UpdateUnpackParameters(); 713 UpdateUnpackParameters();
721 } 714 }
722 715
723 // Include the auto-generated part of this file. We split this because it means 716 // Include the auto-generated part of this file. We split this because it means
724 // we can easily edit the non-auto generated parts right here in this file 717 // we can easily edit the non-auto generated parts right here in this file
725 // instead of having to edit some template or the code generator. 718 // instead of having to edit some template or the code generator.
726 #include "gpu/command_buffer/service/context_state_impl_autogen.h" 719 #include "gpu/command_buffer/service/context_state_impl_autogen.h"
727 720
728 } // namespace gles2 721 } // namespace gles2
729 } // namespace gpu 722 } // namespace gpu
OLDNEW
« no previous file with comments | « gpu/command_buffer/service/context_state.h ('k') | gpu/command_buffer/service/gles2_cmd_decoder.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698