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

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

Issue 207443007: Blacklist partial swaps on linux (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fix nit Created 6 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 | Annotate | Revision Log
« no previous file with comments | « gpu/command_buffer/service/gl_surface_mock.h ('k') | gpu/config/gpu_driver_bug_list_json.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 1684 matching lines...) Expand 10 before | Expand all | Expand 10 after
1695 1695
1696 // Cached from ContextGroup 1696 // Cached from ContextGroup
1697 const Validators* validators_; 1697 const Validators* validators_;
1698 scoped_refptr<FeatureInfo> feature_info_; 1698 scoped_refptr<FeatureInfo> feature_info_;
1699 1699
1700 int frame_number_; 1700 int frame_number_;
1701 1701
1702 bool has_robustness_extension_; 1702 bool has_robustness_extension_;
1703 GLenum reset_status_; 1703 GLenum reset_status_;
1704 bool reset_by_robustness_extension_; 1704 bool reset_by_robustness_extension_;
1705 bool supports_post_sub_buffer_;
1705 1706
1706 // These flags are used to override the state of the shared feature_info_ 1707 // These flags are used to override the state of the shared feature_info_
1707 // member. Because the same FeatureInfo instance may be shared among many 1708 // member. Because the same FeatureInfo instance may be shared among many
1708 // contexts, the assumptions on the availablity of extensions in WebGL 1709 // contexts, the assumptions on the availablity of extensions in WebGL
1709 // contexts may be broken. These flags override the shared state to preserve 1710 // contexts may be broken. These flags override the shared state to preserve
1710 // WebGL semantics. 1711 // WebGL semantics.
1711 bool force_webgl_glsl_validation_; 1712 bool force_webgl_glsl_validation_;
1712 bool derivatives_explicitly_enabled_; 1713 bool derivatives_explicitly_enabled_;
1713 bool frag_depth_explicitly_enabled_; 1714 bool frag_depth_explicitly_enabled_;
1714 bool draw_buffers_explicitly_enabled_; 1715 bool draw_buffers_explicitly_enabled_;
(...skipping 485 matching lines...) Expand 10 before | Expand all | Expand 10 after
2200 back_buffer_has_stencil_(false), 2201 back_buffer_has_stencil_(false),
2201 backbuffer_needs_clear_bits_(0), 2202 backbuffer_needs_clear_bits_(0),
2202 current_decoder_error_(error::kNoError), 2203 current_decoder_error_(error::kNoError),
2203 use_shader_translator_(true), 2204 use_shader_translator_(true),
2204 validators_(group_->feature_info()->validators()), 2205 validators_(group_->feature_info()->validators()),
2205 feature_info_(group_->feature_info()), 2206 feature_info_(group_->feature_info()),
2206 frame_number_(0), 2207 frame_number_(0),
2207 has_robustness_extension_(false), 2208 has_robustness_extension_(false),
2208 reset_status_(GL_NO_ERROR), 2209 reset_status_(GL_NO_ERROR),
2209 reset_by_robustness_extension_(false), 2210 reset_by_robustness_extension_(false),
2211 supports_post_sub_buffer_(false),
2210 force_webgl_glsl_validation_(false), 2212 force_webgl_glsl_validation_(false),
2211 derivatives_explicitly_enabled_(false), 2213 derivatives_explicitly_enabled_(false),
2212 frag_depth_explicitly_enabled_(false), 2214 frag_depth_explicitly_enabled_(false),
2213 draw_buffers_explicitly_enabled_(false), 2215 draw_buffers_explicitly_enabled_(false),
2214 compile_shader_always_succeeds_(false), 2216 compile_shader_always_succeeds_(false),
2215 service_logging_(CommandLine::ForCurrentProcess()->HasSwitch( 2217 service_logging_(CommandLine::ForCurrentProcess()->HasSwitch(
2216 switches::kEnableGPUServiceLoggingGPU)), 2218 switches::kEnableGPUServiceLoggingGPU)),
2217 viewport_max_width_(0), 2219 viewport_max_width_(0),
2218 viewport_max_height_(0), 2220 viewport_max_height_(0),
2219 texture_state_(group_->feature_info() 2221 texture_state_(group_->feature_info()
(...skipping 340 matching lines...) Expand 10 before | Expand all | Expand 10 after
2560 // because the system already clears the buffer before each draw. Proper 2562 // because the system already clears the buffer before each draw. Proper
2561 // fix might be setting the scissor clip properly before initialize. See 2563 // fix might be setting the scissor clip properly before initialize. See
2562 // crbug.com/259023 for details. 2564 // crbug.com/259023 for details.
2563 call_gl_clear = surface_->GetHandle(); 2565 call_gl_clear = surface_->GetHandle();
2564 #endif 2566 #endif
2565 if (call_gl_clear) { 2567 if (call_gl_clear) {
2566 // Clear the backbuffer. 2568 // Clear the backbuffer.
2567 glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT); 2569 glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT);
2568 } 2570 }
2569 2571
2572 supports_post_sub_buffer_ = surface->SupportsPostSubBuffer();
2573 if (feature_info_->workarounds()
2574 .disable_post_sub_buffers_for_onscreen_surfaces &&
2575 !surface->IsOffscreen())
2576 supports_post_sub_buffer_ = false;
2577
2570 if (feature_info_->workarounds().reverse_point_sprite_coord_origin) { 2578 if (feature_info_->workarounds().reverse_point_sprite_coord_origin) {
2571 glPointParameteri(GL_POINT_SPRITE_COORD_ORIGIN, GL_LOWER_LEFT); 2579 glPointParameteri(GL_POINT_SPRITE_COORD_ORIGIN, GL_LOWER_LEFT);
2572 } 2580 }
2573 2581
2574 if (feature_info_->workarounds().unbind_fbo_on_context_switch) { 2582 if (feature_info_->workarounds().unbind_fbo_on_context_switch) {
2575 context_->SetUnbindFboOnMakeCurrent(); 2583 context_->SetUnbindFboOnMakeCurrent();
2576 } 2584 }
2577 2585
2578 if (feature_info_->workarounds().release_image_after_use) { 2586 if (feature_info_->workarounds().release_image_after_use) {
2579 image_manager()->SetReleaseAfterUse(); 2587 image_manager()->SetReleaseAfterUse();
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
2612 caps.texture_usage = feature_info_->feature_flags().angle_texture_usage; 2620 caps.texture_usage = feature_info_->feature_flags().angle_texture_usage;
2613 caps.texture_storage = feature_info_->feature_flags().ext_texture_storage; 2621 caps.texture_storage = feature_info_->feature_flags().ext_texture_storage;
2614 caps.discard_framebuffer = 2622 caps.discard_framebuffer =
2615 feature_info_->feature_flags().ext_discard_framebuffer; 2623 feature_info_->feature_flags().ext_discard_framebuffer;
2616 2624
2617 #if defined(OS_MACOSX) 2625 #if defined(OS_MACOSX)
2618 // This is unconditionally true on mac, no need to test for it at runtime. 2626 // This is unconditionally true on mac, no need to test for it at runtime.
2619 caps.iosurface = true; 2627 caps.iosurface = true;
2620 #endif 2628 #endif
2621 2629
2622 caps.post_sub_buffer = surface_->HasExtension("GL_CHROMIUM_post_sub_buffer"); 2630 caps.post_sub_buffer = supports_post_sub_buffer_;
2623 2631
2624 return caps; 2632 return caps;
2625 } 2633 }
2626 2634
2627 void GLES2DecoderImpl::UpdateCapabilities() { 2635 void GLES2DecoderImpl::UpdateCapabilities() {
2628 util_.set_num_compressed_texture_formats( 2636 util_.set_num_compressed_texture_formats(
2629 validators_->compressed_texture_format.GetValues().size()); 2637 validators_->compressed_texture_format.GetValues().size());
2630 util_.set_num_shader_binary_formats( 2638 util_.set_num_shader_binary_formats(
2631 validators_->shader_binary_format.GetValues().size()); 2639 validators_->shader_binary_format.GetValues().size());
2632 } 2640 }
(...skipping 4793 matching lines...) Expand 10 before | Expand all | Expand 10 after
7426 // Validation should have prevented us from getting here. 7434 // Validation should have prevented us from getting here.
7427 NOTREACHED(); 7435 NOTREACHED();
7428 break; 7436 break;
7429 } 7437 }
7430 return error::kNoError; 7438 return error::kNoError;
7431 } 7439 }
7432 7440
7433 error::Error GLES2DecoderImpl::HandlePostSubBufferCHROMIUM( 7441 error::Error GLES2DecoderImpl::HandlePostSubBufferCHROMIUM(
7434 uint32 immediate_data_size, const cmds::PostSubBufferCHROMIUM& c) { 7442 uint32 immediate_data_size, const cmds::PostSubBufferCHROMIUM& c) {
7435 TRACE_EVENT0("gpu", "GLES2DecoderImpl::HandlePostSubBufferCHROMIUM"); 7443 TRACE_EVENT0("gpu", "GLES2DecoderImpl::HandlePostSubBufferCHROMIUM");
7436 if (!surface_->HasExtension("GL_CHROMIUM_post_sub_buffer")) { 7444 if (!supports_post_sub_buffer_) {
7437 LOCAL_SET_GL_ERROR( 7445 LOCAL_SET_GL_ERROR(
7438 GL_INVALID_OPERATION, 7446 GL_INVALID_OPERATION,
7439 "glPostSubBufferCHROMIUM", "command not supported by surface"); 7447 "glPostSubBufferCHROMIUM", "command not supported by surface");
7440 return error::kNoError; 7448 return error::kNoError;
7441 } 7449 }
7442 bool is_tracing; 7450 bool is_tracing;
7443 TRACE_EVENT_CATEGORY_GROUP_ENABLED(TRACE_DISABLED_BY_DEFAULT("gpu.debug"), 7451 TRACE_EVENT_CATEGORY_GROUP_ENABLED(TRACE_DISABLED_BY_DEFAULT("gpu.debug"),
7444 &is_tracing); 7452 &is_tracing);
7445 if (is_tracing) { 7453 if (is_tracing) {
7446 bool is_offscreen = !!offscreen_target_frame_buffer_.get(); 7454 bool is_offscreen = !!offscreen_target_frame_buffer_.get();
(...skipping 173 matching lines...) Expand 10 before | Expand all | Expand 10 after
7620 if (!draw_buffers_explicitly_enabled_) { 7628 if (!draw_buffers_explicitly_enabled_) {
7621 size_t offset = extensions.find(kEXTDrawBuffersExtension); 7629 size_t offset = extensions.find(kEXTDrawBuffersExtension);
7622 if (std::string::npos != offset) { 7630 if (std::string::npos != offset) {
7623 extensions.replace(offset, arraysize(kEXTDrawBuffersExtension), 7631 extensions.replace(offset, arraysize(kEXTDrawBuffersExtension),
7624 std::string()); 7632 std::string());
7625 } 7633 }
7626 } 7634 }
7627 } else { 7635 } else {
7628 extensions = feature_info_->extensions().c_str(); 7636 extensions = feature_info_->extensions().c_str();
7629 } 7637 }
7630 std::string surface_extensions = surface_->GetExtensions(); 7638 if (supports_post_sub_buffer_)
7631 if (!surface_extensions.empty()) 7639 extensions += " GL_CHROMIUM_post_sub_buffer";
7632 extensions += " " + surface_extensions;
7633 str = extensions.c_str(); 7640 str = extensions.c_str();
7634 } 7641 }
7635 break; 7642 break;
7636 default: 7643 default:
7637 break; 7644 break;
7638 } 7645 }
7639 Bucket* bucket = CreateBucket(c.bucket_id); 7646 Bucket* bucket = CreateBucket(c.bucket_id);
7640 bucket->SetFromString(str); 7647 bucket->SetFromString(str);
7641 return error::kNoError; 7648 return error::kNoError;
7642 } 7649 }
(...skipping 2901 matching lines...) Expand 10 before | Expand all | Expand 10 after
10544 DoDidUseTexImageIfNeeded(texture, texture->target()); 10551 DoDidUseTexImageIfNeeded(texture, texture->target());
10545 } 10552 }
10546 10553
10547 // Include the auto-generated part of this file. We split this because it means 10554 // Include the auto-generated part of this file. We split this because it means
10548 // we can easily edit the non-auto generated parts right here in this file 10555 // we can easily edit the non-auto generated parts right here in this file
10549 // instead of having to edit some template or the code generator. 10556 // instead of having to edit some template or the code generator.
10550 #include "gpu/command_buffer/service/gles2_cmd_decoder_autogen.h" 10557 #include "gpu/command_buffer/service/gles2_cmd_decoder_autogen.h"
10551 10558
10552 } // namespace gles2 10559 } // namespace gles2
10553 } // namespace gpu 10560 } // namespace gpu
OLDNEW
« no previous file with comments | « gpu/command_buffer/service/gl_surface_mock.h ('k') | gpu/config/gpu_driver_bug_list_json.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698