From b566317e7e6eb78a22cac759a4af2e9d78f74a32 Mon Sep 17 00:00:00 2001 From: Kenneth Graunke Date: Tue, 15 Mar 2016 11:13:25 -0700 Subject: [PATCH] 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 Reviewed-by: Matt Turner --- src/mesa/drivers/common/meta.c | 17 ++++++----------- src/mesa/drivers/common/meta_blit.c | 15 +++++++++------ src/mesa/drivers/dri/i965/brw_meta_fast_clear.c | 4 ++-- 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); -- 2.30.2