meta: Use ARB_explicit_attrib_location in the rest of the meta shaders.
authorKenneth Graunke <kenneth@whitecape.org>
Tue, 15 Mar 2016 18:13:25 +0000 (11:13 -0700)
committerKenneth Graunke <kenneth@whitecape.org>
Wed, 16 Mar 2016 07:09:56 +0000 (00:09 -0700)
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 <kenneth@whitecape.org>
Reviewed-by: Matt Turner <mattst88@gmail.com>
src/mesa/drivers/common/meta.c
src/mesa/drivers/common/meta_blit.c
src/mesa/drivers/dri/i965/brw_meta_fast_clear.c

index ab78f4565da362bac25ec89379a47eba46dc31a9..b05dfc725f5f9c142169f8bfb35ae151efc0c4e5 100644 (file)
@@ -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"
index 5d80f7d8fe13a6f000d3c36a8b1c07ce8c483454..179dc0d8630ba0a4fecb0be561bbf2560234b9a8 100644 (file)
@@ -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"
index b81b1438ba3c8076bea2f4fb9610979b435ee74a..fe61c1654d2a83162a3d925bacf3c730bbf5dd63 100644 (file)
@@ -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);