diff options
author | oetuaho <oetuaho@nvidia.com> | 2015-06-04 10:46:27 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-06-04 17:47:58 +0000 |
commit | 6458e0513e74da2cb3878dfe109ae44f2655d402 (patch) | |
tree | 13e49e6affe82799d8ffbd3496df68548ffcc1d4 /gpu | |
parent | 30dfdf1a9a1326324eebea111284f59078f7e69d (diff) | |
download | chromium_src-6458e0513e74da2cb3878dfe109ae44f2655d402.zip chromium_src-6458e0513e74da2cb3878dfe109ae44f2655d402.tar.gz chromium_src-6458e0513e74da2cb3878dfe109ae44f2655d402.tar.bz2 |
Enable ANGLE workaround for NVIDIA GLSL compiler pow bug
The bug is known to affect the compiler in at least NVIDIA 331.x drivers,
which are widespread on Linux. Newest NVIDIA drivers should have a fix
for this issue.
TEST=WebGL conformance tests
BUG=477306
Review URL: https://codereview.chromium.org/1157293005
Cr-Commit-Position: refs/heads/master@{#332854}
Diffstat (limited to 'gpu')
-rw-r--r-- | gpu/command_buffer/service/gles2_cmd_decoder.cc | 2 | ||||
-rw-r--r-- | gpu/config/gpu_driver_bug_list_json.cc | 18 | ||||
-rw-r--r-- | gpu/config/gpu_driver_bug_workaround_type.h | 2 |
3 files changed, 21 insertions, 1 deletions
diff --git a/gpu/command_buffer/service/gles2_cmd_decoder.cc b/gpu/command_buffer/service/gles2_cmd_decoder.cc index 951bbd6..717c635 100644 --- a/gpu/command_buffer/service/gles2_cmd_decoder.cc +++ b/gpu/command_buffer/service/gles2_cmd_decoder.cc @@ -3182,6 +3182,8 @@ bool GLES2DecoderImpl::InitializeShaderTranslator() { driver_bug_workarounds |= SH_SCALARIZE_VEC_AND_MAT_CONSTRUCTOR_ARGS; if (workarounds().regenerate_struct_names) driver_bug_workarounds |= SH_REGENERATE_STRUCT_NAMES; + if (workarounds().remove_pow_with_constant_exponent) + driver_bug_workarounds |= SH_REMOVE_POW_WITH_CONSTANT_EXPONENT; if (base::CommandLine::ForCurrentProcess()->HasSwitch( switches::kEmulateShaderPrecision)) diff --git a/gpu/config/gpu_driver_bug_list_json.cc b/gpu/config/gpu_driver_bug_list_json.cc index b13f601..3373968 100644 --- a/gpu/config/gpu_driver_bug_list_json.cc +++ b/gpu/config/gpu_driver_bug_list_json.cc @@ -19,7 +19,7 @@ const char kGpuDriverBugListJson[] = LONG_STRING_CONST( { "name": "gpu driver bug list", // Please update the version number whenever you change this file. - "version": "8.08", + "version": "8.09", "entries": [ { "id": 1, @@ -1395,6 +1395,22 @@ LONG_STRING_CONST( "features": [ "disable_blend_equation_advanced" ] + }, + { + "id": 118, + "cr_bugs": [477306], + "description": "NVIDIA 331 series drivers shader compiler may crash when attempting to optimize pow()", + "os": { + "type": "linux" + }, + "driver_version": { + "op": "<=", + "value": "331" + }, + "vendor_id": "0x10de", + "features": [ + "remove_pow_with_constant_exponent" + ] } ] } diff --git a/gpu/config/gpu_driver_bug_workaround_type.h b/gpu/config/gpu_driver_bug_workaround_type.h index 83e143d..015aea3 100644 --- a/gpu/config/gpu_driver_bug_workaround_type.h +++ b/gpu/config/gpu_driver_bug_workaround_type.h @@ -94,6 +94,8 @@ needs_offscreen_buffer_workaround) \ GPU_OP(REGENERATE_STRUCT_NAMES, \ regenerate_struct_names) \ + GPU_OP(REMOVE_POW_WITH_CONSTANT_EXPONENT, \ + remove_pow_with_constant_exponent) \ GPU_OP(RESTORE_SCISSOR_ON_FBO_CHANGE, \ restore_scissor_on_fbo_change) \ GPU_OP(REVERSE_POINT_SPRITE_COORD_ORIGIN, \ |