aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKenneth Graunke <[email protected]>2016-03-15 11:13:25 -0700
committerKenneth Graunke <[email protected]>2016-03-16 00:09:56 -0700
commitb566317e7e6eb78a22cac759a4af2e9d78f74a32 (patch)
treef587ab9b4363e3310624267708d2f56d0562b63d
parent9d9965c06f18f7d609933e511b98514570e85909 (diff)
meta: Use ARB_explicit_attrib_location in the rest of the meta shaders.
This is cleaner than using glBindAttribLocation(). Not all drivers support the extension, but I don't think those drivers use GLSL in the first place. Apparently some Meta shaders already use GL_ARB_explicit_attrib_location, so I think it should be okay. Honestly, I'm not sure how the old code worked anyway - we bound the attribute location for "texcoords", while all the shaders capitalized or spelled it differently. v2: Convert another instance in brw_meta_fast_clear.c. Signed-off-by: Kenneth Graunke <[email protected]> Reviewed-by: Matt Turner <[email protected]>
-rw-r--r--src/mesa/drivers/common/meta.c17
-rw-r--r--src/mesa/drivers/common/meta_blit.c15
-rw-r--r--src/mesa/drivers/dri/i965/brw_meta_fast_clear.c4
3 files changed, 17 insertions, 19 deletions
diff --git a/src/mesa/drivers/common/meta.c b/src/mesa/drivers/common/meta.c
index ab78f4565da..b05dfc725f5 100644
--- a/src/mesa/drivers/common/meta.c
+++ b/src/mesa/drivers/common/meta.c
@@ -207,8 +207,6 @@ _mesa_meta_compile_and_link_program(struct gl_context *ctx,
_mesa_DeleteShader(fs);
_mesa_AttachShader(*program, vs);
_mesa_DeleteShader(vs);
- _mesa_BindAttribLocation(*program, 0, "position");
- _mesa_BindAttribLocation(*program, 1, "texcoords");
_mesa_meta_link_program_with_debug(ctx, *program);
_mesa_UseProgram(*program);
@@ -230,19 +228,15 @@ _mesa_meta_setup_blit_shader(struct gl_context *ctx,
{
char *vs_source, *fs_source;
struct blit_shader *shader = choose_blit_shader(target, table);
- const char *vs_input, *vs_output, *fs_input, *vs_preprocess, *fs_preprocess;
+ const char *fs_input, *vs_preprocess, *fs_preprocess;
void *mem_ctx;
if (ctx->Const.GLSLVersion < 130) {
vs_preprocess = "";
- vs_input = "attribute";
- vs_output = "varying";
fs_preprocess = "#extension GL_EXT_texture_array : enable";
fs_input = "varying";
} else {
vs_preprocess = "#version 130";
- vs_input = "in";
- vs_output = "out";
fs_preprocess = "#version 130";
fs_input = "in";
shader->func = "texture";
@@ -259,15 +253,16 @@ _mesa_meta_setup_blit_shader(struct gl_context *ctx,
vs_source = ralloc_asprintf(mem_ctx,
"%s\n"
- "%s vec2 position;\n"
- "%s vec4 textureCoords;\n"
- "%s vec4 texCoords;\n"
+ "#extension GL_ARB_explicit_attrib_location: enable\n"
+ "layout(location = 0) in vec2 position;\n"
+ "layout(location = 1) in vec4 textureCoords;\n"
+ "out vec4 texCoords;\n"
"void main()\n"
"{\n"
" texCoords = textureCoords;\n"
" gl_Position = vec4(position, 0.0, 1.0);\n"
"}\n",
- vs_preprocess, vs_input, vs_input, vs_output);
+ vs_preprocess);
fs_source = ralloc_asprintf(mem_ctx,
"%s\n"
diff --git a/src/mesa/drivers/common/meta_blit.c b/src/mesa/drivers/common/meta_blit.c
index 5d80f7d8fe1..179dc0d8630 100644
--- a/src/mesa/drivers/common/meta_blit.c
+++ b/src/mesa/drivers/common/meta_blit.c
@@ -168,8 +168,9 @@ setup_glsl_msaa_blit_scaled_shader(struct gl_context *ctx,
static const char vs_source[] =
"#version 130\n"
- "in vec2 position;\n"
- "in vec3 textureCoords;\n"
+ "#extension GL_ARB_explicit_attrib_location: enable\n"
+ "layout(location = 0) in vec2 position;\n"
+ "layout(location = 1) in vec3 textureCoords;\n"
"out vec2 texCoords;\n"
"flat out int layer;\n"
"void main()\n"
@@ -384,8 +385,9 @@ setup_glsl_msaa_blit_shader(struct gl_context *ctx,
vs_source = ralloc_asprintf(mem_ctx,
"#version 130\n"
- "in vec2 position;\n"
- "in %s textureCoords;\n"
+ "#extension GL_ARB_explicit_attrib_location: enable\n"
+ "layout(location = 0) in vec2 position;\n"
+ "layout(location = 1) in %s textureCoords;\n"
"out %s texCoords;\n"
"void main()\n"
"{\n"
@@ -506,8 +508,9 @@ setup_glsl_msaa_blit_shader(struct gl_context *ctx,
vs_source = ralloc_asprintf(mem_ctx,
"#version 130\n"
- "in vec2 position;\n"
- "in %s textureCoords;\n"
+ "#extension GL_ARB_explicit_attrib_location: enable\n"
+ "layout(location = 0) in vec2 position;\n"
+ "layout(location = 1) in %s textureCoords;\n"
"out %s texCoords;\n"
"void main()\n"
"{\n"
diff --git a/src/mesa/drivers/dri/i965/brw_meta_fast_clear.c b/src/mesa/drivers/dri/i965/brw_meta_fast_clear.c
index b81b1438ba3..fe61c1654d2 100644
--- a/src/mesa/drivers/dri/i965/brw_meta_fast_clear.c
+++ b/src/mesa/drivers/dri/i965/brw_meta_fast_clear.c
@@ -110,7 +110,8 @@ brw_bind_rep_write_shader(struct brw_context *brw, float *color)
const char *vs_source =
"#extension GL_AMD_vertex_shader_layer : enable\n"
"#extension GL_ARB_draw_instanced : enable\n"
- "attribute vec4 position;\n"
+ "#extension GL_ARB_explicit_attrib_location : enable\n"
+ "layout(location = 0) in vec4 position;\n"
"uniform int layer;\n"
"void main()\n"
"{\n"
@@ -144,7 +145,6 @@ brw_bind_rep_write_shader(struct brw_context *brw, float *color)
_mesa_DeleteShader(fs);
_mesa_AttachShader(clear->shader_prog, vs);
_mesa_DeleteShader(vs);
- _mesa_BindAttribLocation(clear->shader_prog, 0, "position");
_mesa_ObjectLabel(GL_PROGRAM, clear->shader_prog, -1, "meta repclear");
_mesa_LinkProgram(clear->shader_prog);