aboutsummaryrefslogtreecommitdiff
path: root/mesalib/src/glsl/ast_to_hir.cpp
diff options
context:
space:
mode:
authormarha <marha@users.sourceforge.net>2011-03-28 12:59:46 +0000
committermarha <marha@users.sourceforge.net>2011-03-28 12:59:46 +0000
commit3015123fd2904d907896b1aefbe32c267baa2dc2 (patch)
tree3adc12a65779305c5fb676be577667ff7e33c389 /mesalib/src/glsl/ast_to_hir.cpp
parent0d9293f57738117231d77df831b6569d4f0739f2 (diff)
parent0b9b391c5a7acb31e5d8061169649043a38d6d0e (diff)
downloadvcxsrv-3015123fd2904d907896b1aefbe32c267baa2dc2.tar.gz
vcxsrv-3015123fd2904d907896b1aefbe32c267baa2dc2.tar.bz2
vcxsrv-3015123fd2904d907896b1aefbe32c267baa2dc2.zip
svn merge ^/branches/released .
Diffstat (limited to 'mesalib/src/glsl/ast_to_hir.cpp')
-rw-r--r--mesalib/src/glsl/ast_to_hir.cpp13
1 files changed, 10 insertions, 3 deletions
diff --git a/mesalib/src/glsl/ast_to_hir.cpp b/mesalib/src/glsl/ast_to_hir.cpp
index 344d76b57..5e1851c11 100644
--- a/mesalib/src/glsl/ast_to_hir.cpp
+++ b/mesalib/src/glsl/ast_to_hir.cpp
@@ -1577,7 +1577,7 @@ ast_expression::hir(exec_list *instructions,
*/
ir_variable *v = array->whole_variable_referenced();
if (v != NULL)
- v->max_array_access = array->type->array_size();
+ v->max_array_access = array->type->array_size() - 1;
}
}
@@ -2676,17 +2676,24 @@ ast_declarator_list::hir(exec_list *instructions,
* preceded by one of these precision qualifiers [...] Literal
* constants do not have precision qualifiers. Neither do Boolean
* variables.
+ *
+ * In GLSL ES, sampler types are also allowed.
+ *
+ * From page 87 of the GLSL ES spec:
+ * "RESOLUTION: Allow sampler types to take a precision qualifier."
*/
if (this->type->specifier->precision != ast_precision_none
&& !var->type->is_float()
&& !var->type->is_integer()
+ && !(var->type->is_sampler() && state->es_shader)
&& !(var->type->is_array()
&& (var->type->fields.array->is_float()
|| var->type->fields.array->is_integer()))) {
_mesa_glsl_error(&loc, state,
- "precision qualifiers apply only to floating point "
- "and integer types");
+ "precision qualifiers apply only to floating point"
+ "%s types", state->es_shader ? ", integer, and sampler"
+ : "and integer");
}
/* Process the initializer and add its instructions to a temporary