diff options
author | Tapani Pälli <[email protected]> | 2015-06-09 13:28:44 +0300 |
---|---|---|
committer | Emil Velikov <[email protected]> | 2015-07-01 15:22:40 +0100 |
commit | 5bec73364111907dc0a32c38b7d5f9b11c19626a (patch) | |
tree | d7d08d184e6bb9456569ca84fe8674ce62afd626 /src | |
parent | 5985de6f1a9e7b01aef99d75d9564f7b2c40688b (diff) |
glsl: Allow dynamic sampler array indexing with GLSL ES < 3.00
Dynamic indexing of sampler arrays is prohibited by GLSL ES 3.00.
Earlier versions allow 'constant-index-expression' indexing, where
index can contain a loop induction variable.
Patch allows dynamic indexing for sampler arrays when GLSL ES < 3.00.
This change makes 'sampler-array-index.frag' parser test in Piglit
pass + fishgl.com works when running Chrome on OpenGL ES 2.0 backend
v2: small change and some more commit message (Tapani)
v3: refactor checks to make it more readable (Ian Romanick)
v4: change warning comment in GLSL ES case (Curro)
Signed-off-by: Tapani Pälli <[email protected]>
Signed-off-by: Kalyan Kondapally <[email protected]>
Reviewed-by: Francisco Jerez <[email protected]>
Cc: "10.5" and "10.6" <[email protected]>
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=84225
(cherry picked from commit edb8383c98ee23385731d0fc23a6b6673528a8ec)
Signed-off-by: Emil Velikov <[email protected]>
Conflicts:
src/glsl/ast_array_index.cpp
Diffstat (limited to 'src')
-rw-r--r-- | src/glsl/ast_array_index.cpp | 38 |
1 files changed, 20 insertions, 18 deletions
diff --git a/src/glsl/ast_array_index.cpp b/src/glsl/ast_array_index.cpp index ff0c7576db0..460e6e066d5 100644 --- a/src/glsl/ast_array_index.cpp +++ b/src/glsl/ast_array_index.cpp @@ -228,24 +228,26 @@ _mesa_ast_array_index_to_hir(void *mem_ctx, * dynamically uniform expression is undefined. */ if (array->type->element_type()->is_sampler()) { - if (!state->is_version(130, 100)) { - if (state->es_shader) { - _mesa_glsl_warning(&loc, state, - "sampler arrays indexed with non-constant " - "expressions is optional in %s", - state->get_version_string()); - } else { - _mesa_glsl_warning(&loc, state, - "sampler arrays indexed with non-constant " - "expressions will be forbidden in GLSL 1.30 " - "and later"); - } - } else if (!state->is_version(400, 0) && !state->ARB_gpu_shader5_enable) { - _mesa_glsl_error(&loc, state, - "sampler arrays indexed with non-constant " - "expressions is forbidden in GLSL 1.30 and " - "later"); - } + if (!state->is_version(400, 0) && !state->ARB_gpu_shader5_enable) { + if (!state->is_version(130, 100)) { + if (state->es_shader) { + _mesa_glsl_warning(&loc, state, + "sampler arrays indexed with non-constant " + "expressions is optional in %s", + state->get_version_string()); + } else { + _mesa_glsl_warning(&loc, state, + "sampler arrays indexed with non-constant " + "expressions will be forbidden in GLSL 1.30 " + "and later"); + } + } else if (!state->is_version(400, 0) && !state->ARB_gpu_shader5_enable) { + _mesa_glsl_error(&loc, state, + "sampler arrays indexed with non-constant " + "expressions is forbidden in GLSL 1.30 and " + "later"); + } + } } } |