summaryrefslogtreecommitdiffstats
path: root/gpu
diff options
context:
space:
mode:
authoroetuaho <oetuaho@nvidia.com>2015-06-04 10:46:27 -0700
committerCommit bot <commit-bot@chromium.org>2015-06-04 17:47:58 +0000
commit6458e0513e74da2cb3878dfe109ae44f2655d402 (patch)
tree13e49e6affe82799d8ffbd3496df68548ffcc1d4 /gpu
parent30dfdf1a9a1326324eebea111284f59078f7e69d (diff)
downloadchromium_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.cc2
-rw-r--r--gpu/config/gpu_driver_bug_list_json.cc18
-rw-r--r--gpu/config/gpu_driver_bug_workaround_type.h2
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, \