[Mesa-dev] [PATCH 19/19] glsl: Allow arrays of arrays in GLSL ES 3.10 and GLSL 4.30
Ilia Mirkin
imirkin at alum.mit.edu
Sat Jun 20 20:57:21 PDT 2015
On Sat, Jun 20, 2015 at 11:38 PM, Timothy Arceri <t_arceri at yahoo.com.au> wrote:
> On Sat, 2015-06-20 at 19:35 -0400, Ilia Mirkin wrote:
>> On Sat, Jun 20, 2015 at 8:33 AM, Timothy Arceri <t_arceri at yahoo.com.au> wrote:
>> > ---
>> > src/glsl/ast_to_hir.cpp | 13 ++++++++-----
>> > src/glsl/glsl_parser.yy | 22 ++++++++++++++--------
>> > src/glsl/glsl_parser_extras.h | 5 +++++
>> > 3 files changed, 27 insertions(+), 13 deletions(-)
>> >
>> > diff --git a/src/glsl/ast_to_hir.cpp b/src/glsl/ast_to_hir.cpp
>> > index 6d2dc2e..81b2765 100644
>> > --- a/src/glsl/ast_to_hir.cpp
>> > +++ b/src/glsl/ast_to_hir.cpp
>> > @@ -1939,12 +1939,15 @@ process_array_type(YYLTYPE *loc, const glsl_type *base,
>> > *
>> > * "Only one-dimensional arrays may be declared."
>> > */
>> > - if (!state->ARB_arrays_of_arrays_enable) {
>> > + if (!state->has_arrays_of_arrays()) {
>> > + const char *const requirement = state->es_shader
>> > + ? "GLSL ES 310"
>> > + : "GL_ARB_arrays_of_array or GLSL 430";
>>
>> I think everywhere I've seen it's GLSL ES 3.10 and GLSL 4.30. Also, it
>> should be arrays_of_array*s*
>
> Thanks for pointing out the missing 's' I'll fix that, however it seems
> more common to use GLSL ES 310 and GLSL 430 see glsl_parser_extras.h.
>
> I could only find one instance of "GLSL 4.30" in glsl_parser.yy I
> searched from 3.30-4.50
$ git grep -P 'GLSL (ES )?\d{3}'
reveals just a handful of instances:
src/gallium/drivers/freedreno/freedreno_screen.c:
{"glsl120", FD_DBG_GLSL120,"Temporary flag to force GLSL 120 (rather
than 130) on a3xx+"},
src/glsl/glsl_parser_extras.h: const char *const requirement =
"GL_ARB_gpu_shader5 extension or GLSL 400";
src/glsl/glsl_parser_extras.h: ? "GLSL ES 300"
src/glsl/glsl_parser_extras.h: :
"GL_ARB_explicit_attrib_location extension or GLSL 330";
src/glsl/glsl_parser_extras.h: ?
"GL_EXT_separate_shader_objects extension or GLSL ES 310"
src/glsl/glsl_parser_extras.h: :
"GL_ARB_separate_shader_objects extension or GLSL 420";
src/glsl/glsl_parser_extras.h: ? "GLSL ES 310"
src/glsl/glsl_parser_extras.h:
"GL_ARB_explicit_attrib_location or GLSL 330.";
Which IMHO should be fixed. Compare that to
$ git grep -P 'GLSL (ES )?\d{1}\.\d{2}' src | wc -l
286
Most of which come from comments... I guess there are just a few that
end up in user strings:
src/glsl/ast_array_index.cpp: "expressions
will be forbidden in GLSL 1.30 "
src/glsl/ast_array_index.cpp: "expressions is
forbidden in GLSL 1.30 and "
src/glsl/ast_to_hir.cpp: "function `%s' in
GLSL ES 3.00", name);
src/glsl/ast_to_hir.cpp: "not allowed in GLSL
ES 1.00");
src/glsl/glsl_parser.yy: "(GLSL ES 1.00 or
GLSL 1.20 required)",
src/glsl/glsl_parser.yy: "%s qualifier
requires GLSL 4.30 or "
src/glsl/glsl_parser_extras.cpp: "GLSL 1.00
ES should be selected using "
The version strings reported also have the . in them:
const char *
glsl_compute_version_string(void *mem_ctx, bool is_es, unsigned version)
{
return ralloc_asprintf(mem_ctx, "GLSL%s %d.%02d", is_es ? " ES" : "",
version / 100, version % 100);
}
IMHO it'd be better to standardize on one thing.
-ilia
More information about the mesa-dev
mailing list