[Mesa-dev] [PATCH] glsl: remove ARB_compute_shader ext, always allow local_size_* qualifiers
Ilia Mirkin
imirkin at alum.mit.edu
Wed Aug 24 17:40:39 UTC 2016
The GL_ARB_compute_shader spec does not make a mention of a #extension
enable, nor a #define with the ext name. It follows that local_size_*
should always be allowed in a compute shader stage, and the #extension
support removed.
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=97447#c7
Signed-off-by: Ilia Mirkin <imirkin at alum.mit.edu>
Cc: mesa-stable at lists.freedesktop.org
---
The change to exposing the gl_MaxCompute* constants is a little dodgy, arguably
it should be exposed everywhere when compute functionality is available, but
that is a little annoying to do, and is no worse than the previous state of
things.
src/compiler/glsl/builtin_variables.cpp | 2 +-
src/compiler/glsl/glsl_lexer.ll | 4 ++--
src/compiler/glsl/glsl_parser.yy | 5 ++---
src/compiler/glsl/glsl_parser_extras.cpp | 1 -
src/compiler/glsl/glsl_parser_extras.h | 7 -------
5 files changed, 5 insertions(+), 14 deletions(-)
diff --git a/src/compiler/glsl/builtin_variables.cpp b/src/compiler/glsl/builtin_variables.cpp
index c9d8b1c..4f88170 100644
--- a/src/compiler/glsl/builtin_variables.cpp
+++ b/src/compiler/glsl/builtin_variables.cpp
@@ -789,7 +789,7 @@ builtin_variable_generator::generate_constants()
}
}
- if (state->is_version(430, 310) || state->ARB_compute_shader_enable) {
+ if (state->is_version(430, 310) || state->stage == MESA_SHADER_COMPUTE) {
add_const("gl_MaxComputeAtomicCounterBuffers",
state->Const.MaxComputeAtomicCounterBuffers);
add_const("gl_MaxComputeAtomicCounters",
diff --git a/src/compiler/glsl/glsl_lexer.ll b/src/compiler/glsl/glsl_lexer.ll
index 7be2b89..3324cde 100644
--- a/src/compiler/glsl/glsl_lexer.ll
+++ b/src/compiler/glsl/glsl_lexer.ll
@@ -410,7 +410,7 @@ writeonly KEYWORD_WITH_ALT(420, 300, 420, 310, yyextra->ARB_shader_image_lo
atomic_uint KEYWORD_WITH_ALT(420, 300, 420, 310, yyextra->ARB_shader_atomic_counters_enable, ATOMIC_UINT);
-shared KEYWORD_WITH_ALT(430, 310, 430, 310, yyextra->ARB_compute_shader_enable, SHARED);
+shared KEYWORD_WITH_ALT(430, 310, 430, 310, yyextra->stage == MESA_SHADER_COMPUTE, SHARED);
struct return STRUCT;
void return VOID_TOK;
@@ -425,7 +425,7 @@ layout {
|| yyextra->ARB_uniform_buffer_object_enable
|| yyextra->ARB_fragment_coord_conventions_enable
|| yyextra->ARB_shading_language_420pack_enable
- || yyextra->ARB_compute_shader_enable
+ || yyextra->stage == MESA_SHADER_COMPUTE
|| yyextra->ARB_tessellation_shader_enable) {
return LAYOUT_TOK;
} else {
diff --git a/src/compiler/glsl/glsl_parser.yy b/src/compiler/glsl/glsl_parser.yy
index 4f4a83c..cf2fb60 100644
--- a/src/compiler/glsl/glsl_parser.yy
+++ b/src/compiler/glsl/glsl_parser.yy
@@ -1570,10 +1570,9 @@ layout_qualifier_id:
for (int i = 0; i < 3; i++) {
if (match_layout_qualifier(local_size_qualifiers[i], $1,
state) == 0) {
- if (!state->has_compute_shader()) {
+ if (state->stage != MESA_SHADER_COMPUTE) {
_mesa_glsl_error(& @3, state,
- "%s qualifier requires GLSL 4.30 or "
- "GLSL ES 3.10 or ARB_compute_shader",
+ "%s qualifier only valid in a compute shader",
local_size_qualifiers[i]);
YYERROR;
} else {
diff --git a/src/compiler/glsl/glsl_parser_extras.cpp b/src/compiler/glsl/glsl_parser_extras.cpp
index 14a5540..37aff38 100644
--- a/src/compiler/glsl/glsl_parser_extras.cpp
+++ b/src/compiler/glsl/glsl_parser_extras.cpp
@@ -578,7 +578,6 @@ static const _mesa_glsl_extension _mesa_glsl_supported_extensions[] = {
EXT(ARB_ES3_1_compatibility),
EXT(ARB_ES3_2_compatibility),
EXT(ARB_arrays_of_arrays),
- EXT(ARB_compute_shader),
EXT(ARB_conservative_depth),
EXT(ARB_cull_distance),
EXT(ARB_derivative_control),
diff --git a/src/compiler/glsl/glsl_parser_extras.h b/src/compiler/glsl/glsl_parser_extras.h
index 0294ef7..e536606 100644
--- a/src/compiler/glsl/glsl_parser_extras.h
+++ b/src/compiler/glsl/glsl_parser_extras.h
@@ -260,11 +260,6 @@ struct _mesa_glsl_parse_state {
return ARB_shading_language_420pack_enable || is_version(420, 310);
}
- bool has_compute_shader() const
- {
- return ARB_compute_shader_enable || is_version(430, 310);
- }
-
bool has_shader_io_blocks() const
{
/* The OES_geometry_shader_specification says:
@@ -557,8 +552,6 @@ struct _mesa_glsl_parse_state {
bool ARB_ES3_2_compatibility_warn;
bool ARB_arrays_of_arrays_enable;
bool ARB_arrays_of_arrays_warn;
- bool ARB_compute_shader_enable;
- bool ARB_compute_shader_warn;
bool ARB_conservative_depth_enable;
bool ARB_conservative_depth_warn;
bool ARB_cull_distance_enable;
--
2.7.3
More information about the mesa-dev
mailing list