From aa9daa285e7a7caefcf9e03911cb9a0b6c4d0a1d Mon Sep 17 00:00:00 2001 From: Henri Verbeet Date: Fri, 28 Sep 2012 01:06:55 +0200 Subject: [PATCH] wined3d: Unify GLSL input / output variable naming. --- dlls/wined3d/glsl_shader.c | 90 +++++++++++++++++++------------------- 1 file changed, 46 insertions(+), 44 deletions(-) diff --git a/dlls/wined3d/glsl_shader.c b/dlls/wined3d/glsl_shader.c index 8a072c9aaa..6efa7fc274 100644 --- a/dlls/wined3d/glsl_shader.c +++ b/dlls/wined3d/glsl_shader.c @@ -1147,17 +1147,17 @@ static void shader_generate_glsl_declarations(const struct wined3d_context *cont UINT in_count = min(vec4_varyings(reg_maps->shader_version.major, gl_info), shader->limits.packed_input); if (use_vs(state)) - shader_addline(buffer, "varying vec4 IN[%u];\n", in_count); + shader_addline(buffer, "varying vec4 %s_in[%u];\n", prefix, in_count); else /* TODO: Write a replacement shader for the fixed function vertex pipeline, so this isn't needed. * For fixed function vertex processing + 3.0 pixel shader we need a separate function in the * pixel shader that reads the fixed function color into the packed input registers. */ - shader_addline(buffer, "vec4 IN[%u];\n", in_count); + shader_addline(buffer, "vec4 %s_in[%u];\n", prefix, in_count); } /* Declare output register temporaries */ if (shader->limits.packed_output) - shader_addline(buffer, "vec4 OUT[%u];\n", shader->limits.packed_output); + shader_addline(buffer, "vec4 %s_out[%u];\n", prefix, shader->limits.packed_output); /* Declare temporary variables */ for (i = 0, map = reg_maps->temporary; map; map >>= 1, ++i) @@ -1170,7 +1170,7 @@ static void shader_generate_glsl_declarations(const struct wined3d_context *cont { for (i = 0, map = reg_maps->input_registers; map; map >>= 1, ++i) { - if (map & 1) shader_addline(buffer, "attribute vec4 attrib%i;\n", i); + if (map & 1) shader_addline(buffer, "attribute vec4 %s_in%u;\n", prefix, i); } } @@ -1305,7 +1305,7 @@ static void shader_glsl_get_register_name(const struct wined3d_shader_register * char *register_name, BOOL *is_color, const struct wined3d_shader_instruction *ins) { /* oPos, oFog and oPts in D3D */ - static const char * const hwrastout_reg_names[] = {"OUT[10]", "OUT[11].x", "OUT[11].y"}; + static const char * const hwrastout_reg_names[] = {"vs_out[10]", "vs_out[11].x", "vs_out[11].y"}; const struct wined3d_shader *shader = ins->ctx->shader; const struct wined3d_shader_reg_maps *reg_maps = ins->ctx->reg_maps; @@ -1327,7 +1327,7 @@ static void shader_glsl_get_register_name(const struct wined3d_shader_register * { struct shader_glsl_ctx_priv *priv = ins->ctx->backend_data; if (priv->cur_vs_args->swizzle_map & (1 << reg->idx)) *is_color = TRUE; - sprintf(register_name, "attrib%u", reg->idx); + sprintf(register_name, "%s_in%u", prefix, reg->idx); break; } @@ -1350,26 +1350,26 @@ static void shader_glsl_get_register_name(const struct wined3d_shader_register * if (shader->u.ps.declared_in_count > in_count) { sprintf(register_name, - "((%s + %u) > %d ? (%s + %u) > %d ? gl_SecondaryColor : gl_Color : IN[%s + %u])", + "((%s + %u) > %u ? (%s + %u) > %u ? gl_SecondaryColor : gl_Color : %s_in[%s + %u])", rel_param.param_str, idx, in_count - 1, rel_param.param_str, idx, in_count, - rel_param.param_str, idx); + prefix, rel_param.param_str, idx); } else { - sprintf(register_name, "IN[%s + %u]", rel_param.param_str, idx); + sprintf(register_name, "%s_in[%s + %u]", prefix, rel_param.param_str, idx); } } else { if (shader->u.ps.declared_in_count > in_count) { - sprintf(register_name, "((%s) > %d ? (%s) > %d ? gl_SecondaryColor : gl_Color : IN[%s])", + sprintf(register_name, "((%s) > %u ? (%s) > %u ? gl_SecondaryColor : gl_Color : %s_in[%s])", rel_param.param_str, in_count - 1, rel_param.param_str, in_count, - rel_param.param_str); + prefix, rel_param.param_str); } else { - sprintf(register_name, "IN[%s]", rel_param.param_str); + sprintf(register_name, "%s_in[%s]", prefix, rel_param.param_str); } } } @@ -1377,7 +1377,7 @@ static void shader_glsl_get_register_name(const struct wined3d_shader_register * { if (idx == in_count) sprintf(register_name, "gl_Color"); else if (idx == in_count + 1) sprintf(register_name, "gl_SecondaryColor"); - else sprintf(register_name, "IN[%u]", idx); + else sprintf(register_name, "%s_in[%u]", prefix, idx); } } else @@ -1447,13 +1447,13 @@ static void shader_glsl_get_register_name(const struct wined3d_shader_register * break; case WINED3DSPR_ATTROUT: - if (!reg->idx) sprintf(register_name, "OUT[8]"); - else sprintf(register_name, "OUT[9]"); + if (!reg->idx) sprintf(register_name, "%s_out[8]", prefix); + else sprintf(register_name, "%s_out[9]", prefix); break; case WINED3DSPR_TEXCRDOUT: /* Vertex shaders >= 3.0: WINED3DSPR_OUTPUT */ - sprintf(register_name, "OUT[%u]", reg->idx); + sprintf(register_name, "%s_out[%u]", prefix, reg->idx); break; case WINED3DSPR_MISCTYPE: @@ -3803,27 +3803,27 @@ static void shader_glsl_input_pack(const struct wined3d_shader *shader, struct w if (shader_match_semantic(semantic_name, WINED3D_DECL_USAGE_TEXCOORD)) { if (semantic_idx < 8 && vertexprocessing == pretransformed) - shader_addline(buffer, "IN[%u]%s = gl_TexCoord[%u]%s;\n", + shader_addline(buffer, "ps_in[%u]%s = gl_TexCoord[%u]%s;\n", shader->u.ps.input_reg_map[i], reg_mask, semantic_idx, reg_mask); else - shader_addline(buffer, "IN[%u]%s = vec4(0.0, 0.0, 0.0, 0.0)%s;\n", + shader_addline(buffer, "ps_in[%u]%s = vec4(0.0, 0.0, 0.0, 0.0)%s;\n", shader->u.ps.input_reg_map[i], reg_mask, reg_mask); } else if (shader_match_semantic(semantic_name, WINED3D_DECL_USAGE_COLOR)) { if (!semantic_idx) - shader_addline(buffer, "IN[%u]%s = vec4(gl_Color)%s;\n", + shader_addline(buffer, "ps_in[%u]%s = vec4(gl_Color)%s;\n", shader->u.ps.input_reg_map[i], reg_mask, reg_mask); else if (semantic_idx == 1) - shader_addline(buffer, "IN[%u]%s = vec4(gl_SecondaryColor)%s;\n", + shader_addline(buffer, "ps_in[%u]%s = vec4(gl_SecondaryColor)%s;\n", shader->u.ps.input_reg_map[i], reg_mask, reg_mask); else - shader_addline(buffer, "IN[%u]%s = vec4(0.0, 0.0, 0.0, 0.0)%s;\n", + shader_addline(buffer, "ps_in[%u]%s = vec4(0.0, 0.0, 0.0, 0.0)%s;\n", shader->u.ps.input_reg_map[i], reg_mask, reg_mask); } else { - shader_addline(buffer, "IN[%u]%s = vec4(0.0, 0.0, 0.0, 0.0)%s;\n", + shader_addline(buffer, "ps_in[%u]%s = vec4(0.0, 0.0, 0.0, 0.0)%s;\n", shader->u.ps.input_reg_map[i], reg_mask, reg_mask); } } @@ -3917,13 +3917,12 @@ static void handle_ps3_input(struct wined3d_shader_buffer *buffer, continue; } - if (in_idx == in_count) { + if (in_idx == in_count) sprintf(destination, "gl_FrontColor"); - } else if (in_idx == in_count + 1) { + else if (in_idx == in_count + 1) sprintf(destination, "gl_FrontSecondaryColor"); - } else { - sprintf(destination, "IN[%u]", in_idx); - } + else + sprintf(destination, "ps_in[%u]", in_idx); semantic_name_in = input_signature[i].semantic_name; semantic_idx_in = input_signature[i].semantic_idx; @@ -3943,7 +3942,7 @@ static void handle_ps3_input(struct wined3d_shader_buffer *buffer, set[in_idx] = mask; shader_glsl_write_mask_to_str(mask, reg_mask); - shader_addline(buffer, "%s%s = OUT[%u]%s;\n", + shader_addline(buffer, "%s%s = vs_out[%u]%s;\n", destination, reg_mask, j, reg_mask); } } @@ -3964,9 +3963,12 @@ static void handle_ps3_input(struct wined3d_shader_buffer *buffer, if (!(set[i] & WINED3DSP_WRITEMASK_3)) reg_mask[size++] = 'w'; reg_mask[size] = '\0'; - if (i == in_count) sprintf(destination, "gl_FrontColor"); - else if (i == in_count + 1) sprintf(destination, "gl_FrontSecondaryColor"); - else sprintf(destination, "IN[%u]", i); + if (i == in_count) + sprintf(destination, "gl_FrontColor"); + else if (i == in_count + 1) + sprintf(destination, "gl_FrontSecondaryColor"); + else + sprintf(destination, "ps_in[%u]", i); if (size == 1) shader_addline(buffer, "%s.%s = 0.0;\n", destination, reg_mask); else shader_addline(buffer, "%s.%s = vec%u(0.0);\n", destination, reg_mask, size); @@ -3995,7 +3997,7 @@ static GLhandleARB generate_param_reorder_function(struct wined3d_shader_buffer if (ps_major < 3) { - shader_addline(buffer, "void order_ps_input(in vec4 OUT[%u]) {\n", MAX_REG_OUTPUT); + shader_addline(buffer, "void order_ps_input(in vec4 vs_out[%u])\n{\n", MAX_REG_OUTPUT); for (i = 0; map; map >>= 1, ++i) { @@ -4011,15 +4013,15 @@ static GLhandleARB generate_param_reorder_function(struct wined3d_shader_buffer if (shader_match_semantic(semantic_name, WINED3D_DECL_USAGE_COLOR)) { if (!semantic_idx) - shader_addline(buffer, "gl_FrontColor%s = OUT[%u]%s;\n", + shader_addline(buffer, "gl_FrontColor%s = vs_out[%u]%s;\n", reg_mask, i, reg_mask); else if (semantic_idx == 1) - shader_addline(buffer, "gl_FrontSecondaryColor%s = OUT[%u]%s;\n", + shader_addline(buffer, "gl_FrontSecondaryColor%s = vs_out[%u]%s;\n", reg_mask, i, reg_mask); } else if (shader_match_semantic(semantic_name, WINED3D_DECL_USAGE_POSITION)) { - shader_addline(buffer, "gl_Position%s = OUT[%u]%s;\n", + shader_addline(buffer, "gl_Position%s = vs_out[%u]%s;\n", reg_mask, i, reg_mask); } else if (shader_match_semantic(semantic_name, WINED3D_DECL_USAGE_TEXCOORD)) @@ -4029,7 +4031,7 @@ static GLhandleARB generate_param_reorder_function(struct wined3d_shader_buffer if (!(gl_info->quirks & WINED3D_QUIRK_SET_TEXCOORD_W) || ps_major > 0) write_mask |= WINED3DSP_WRITEMASK_3; - shader_addline(buffer, "gl_TexCoord[%u]%s = OUT[%u]%s;\n", + shader_addline(buffer, "gl_TexCoord[%u]%s = vs_out[%u]%s;\n", semantic_idx, reg_mask, i, reg_mask); if (!(write_mask & WINED3DSP_WRITEMASK_3)) shader_addline(buffer, "gl_TexCoord[%u].w = 1.0;\n", semantic_idx); @@ -4037,11 +4039,11 @@ static GLhandleARB generate_param_reorder_function(struct wined3d_shader_buffer } else if (shader_match_semantic(semantic_name, WINED3D_DECL_USAGE_PSIZE)) { - shader_addline(buffer, "gl_PointSize = OUT[%u].%c;\n", i, reg_mask[1]); + shader_addline(buffer, "gl_PointSize = vs_out[%u].%c;\n", i, reg_mask[1]); } else if (shader_match_semantic(semantic_name, WINED3D_DECL_USAGE_FOG)) { - shader_addline(buffer, "gl_FogFragCoord = clamp(OUT[%u].%c, 0.0, 1.0);\n", i, reg_mask[1]); + shader_addline(buffer, "gl_FogFragCoord = clamp(vs_out[%u].%c, 0.0, 1.0);\n", i, reg_mask[1]); } } shader_addline(buffer, "}\n"); @@ -4050,8 +4052,8 @@ static GLhandleARB generate_param_reorder_function(struct wined3d_shader_buffer { UINT in_count = min(vec4_varyings(ps_major, gl_info), ps->limits.packed_input); /* This one is tricky: a 3.0 pixel shader reads from a 3.0 vertex shader */ - shader_addline(buffer, "varying vec4 IN[%u];\n", in_count); - shader_addline(buffer, "void order_ps_input(in vec4 OUT[%u]) {\n", MAX_REG_OUTPUT); + shader_addline(buffer, "varying vec4 ps_in[%u];\n", in_count); + shader_addline(buffer, "void order_ps_input(in vec4 vs_out[%u])\n{\n", MAX_REG_OUTPUT); /* First, sort out position and point size. Those are not passed to the pixel shader */ for (i = 0; map; map >>= 1, ++i) @@ -4063,12 +4065,12 @@ static GLhandleARB generate_param_reorder_function(struct wined3d_shader_buffer if (shader_match_semantic(semantic_name, WINED3D_DECL_USAGE_POSITION)) { - shader_addline(buffer, "gl_Position%s = OUT[%u]%s;\n", + shader_addline(buffer, "gl_Position%s = vs_out[%u]%s;\n", reg_mask, i, reg_mask); } else if (shader_match_semantic(semantic_name, WINED3D_DECL_USAGE_PSIZE)) { - shader_addline(buffer, "gl_PointSize = OUT[%u].%c;\n", i, reg_mask[1]); + shader_addline(buffer, "gl_PointSize = vs_out[%u].%c;\n", i, reg_mask[1]); } } @@ -4231,7 +4233,7 @@ static GLuint shader_glsl_generate_vshader(const struct wined3d_context *context shader_generate_main(shader, buffer, reg_maps, function, &priv_ctx); /* Unpack outputs */ - shader_addline(buffer, "order_ps_input(OUT);\n"); + shader_addline(buffer, "order_ps_input(vs_out);\n"); /* The D3DRS_FOGTABLEMODE render state defines if the shader-generated fog coord is used * or if the fragment depth is used. If the fragment depth is used(FOGTABLEMODE != NONE), @@ -4510,7 +4512,7 @@ static void set_glsl_shader_program(const struct wined3d_context *context, { if (!(map & 1)) continue; - snprintf(tmp_name, sizeof(tmp_name), "attrib%u", i); + snprintf(tmp_name, sizeof(tmp_name), "vs_in%u", i); GL_EXTCALL(glBindAttribLocationARB(programId, i, tmp_name)); } checkGLcall("glBindAttribLocationARB");