Module: wine Branch: master Commit: 57d1548b5162822d6d5cf9e0b26714abc6b93e84 URL: http://source.winehq.org/git/wine.git/?a=commit;h=57d1548b5162822d6d5cf9e0b2...
Author: Alexandre Julliard julliard@winehq.org Date: Wed Nov 28 12:55:11 2007 +0100
wined3d: Add printf format checking to the shader_addline function and fix resulting warnings.
---
dlls/wined3d/arb_program_shader.c | 8 ++++---- dlls/wined3d/glsl_shader.c | 34 +++++++++++++++++----------------- dlls/wined3d/wined3d_private.h | 8 +++++++- 3 files changed, 28 insertions(+), 22 deletions(-)
diff --git a/dlls/wined3d/arb_program_shader.c b/dlls/wined3d/arb_program_shader.c index b044f31..a228f64 100644 --- a/dlls/wined3d/arb_program_shader.c +++ b/dlls/wined3d/arb_program_shader.c @@ -1020,8 +1020,8 @@ void pshader_hw_texkill(SHADER_OPCODE_ARG* arg) { * copy the register into our general purpose TMP variable, overwrite .w and pass TMP to KIL */ shader_addline(buffer, "MOV TMP, %s;\n", reg_dest); - shader_addline(buffer, "MOV TMP.w, one.w;\n", reg_dest); - shader_addline(buffer, "KIL TMP;\n", reg_dest); + shader_addline(buffer, "MOV TMP.w, one.w;\n"); + shader_addline(buffer, "KIL TMP;\n"); } }
@@ -1374,8 +1374,8 @@ void pshader_hw_texdepth(SHADER_OPCODE_ARG* arg) { */ shader_addline(buffer, "RCP %s.g, %s.g;\n", dst_name, dst_name); shader_addline(buffer, "MUL TMP.x, %s.r, %s.g;\n", dst_name, dst_name); - shader_addline(buffer, "MIN TMP.x, TMP.x, one.r;\n", dst_name, dst_name); - shader_addline(buffer, "MAX result.depth, TMP.x, 0.0;\n", dst_name, dst_name); + shader_addline(buffer, "MIN TMP.x, TMP.x, one.r;\n"); + shader_addline(buffer, "MAX result.depth, TMP.x, 0.0;\n"); }
/** Process the WINED3DSIO_TEXDP3TEX instruction in ARB: diff --git a/dlls/wined3d/glsl_shader.c b/dlls/wined3d/glsl_shader.c index 0dd306f..1ba609f 100644 --- a/dlls/wined3d/glsl_shader.c +++ b/dlls/wined3d/glsl_shader.c @@ -478,7 +478,7 @@ void shader_generate_glsl_declarations( /* Prototype the subroutines */ for (i = 0; i < This->baseShader.limits.label; i++) { if (reg_maps->labels[i]) - shader_addline(buffer, "void subroutine%lu();\n", i); + shader_addline(buffer, "void subroutine%u();\n", i); }
/* Declare the constants (aka uniforms) */ @@ -573,19 +573,19 @@ void shader_generate_glsl_declarations( switch (stype) {
case WINED3DSTT_1D: - shader_addline(buffer, "uniform sampler1D %csampler%lu;\n", prefix, i); + shader_addline(buffer, "uniform sampler1D %csampler%u;\n", prefix, i); break; case WINED3DSTT_2D: - shader_addline(buffer, "uniform sampler2D %csampler%lu;\n", prefix, i); + shader_addline(buffer, "uniform sampler2D %csampler%u;\n", prefix, i); break; case WINED3DSTT_CUBE: - shader_addline(buffer, "uniform samplerCube %csampler%lu;\n", prefix, i); + shader_addline(buffer, "uniform samplerCube %csampler%u;\n", prefix, i); break; case WINED3DSTT_VOLUME: - shader_addline(buffer, "uniform sampler3D %csampler%lu;\n", prefix, i); + shader_addline(buffer, "uniform sampler3D %csampler%u;\n", prefix, i); break; default: - shader_addline(buffer, "uniform unsupported_sampler %csampler%lu;\n", prefix, i); + shader_addline(buffer, "uniform unsupported_sampler %csampler%u;\n", prefix, i); FIXME("Unrecognized sampler type: %#x\n", stype); break; } @@ -601,7 +601,7 @@ void shader_generate_glsl_declarations( /* Declare texture coordinate temporaries and initialize them */ for (i = 0; i < This->baseShader.limits.texcoord; i++) { if (reg_maps->texcoord[i]) - shader_addline(buffer, "vec4 T%lu = gl_TexCoord[%lu];\n", i, i); + shader_addline(buffer, "vec4 T%u = gl_TexCoord[%u];\n", i, i); }
/* Declare input register varyings. Only pixel shader, vertex shaders have that declared in the @@ -609,25 +609,25 @@ void shader_generate_glsl_declarations( */ if(pshader && This->baseShader.hex_version >= WINED3DVS_VERSION(3, 0)) { if(use_vs(device)) { - shader_addline(buffer, "varying vec4 IN[%lu];\n", GL_LIMITS(glsl_varyings) / 4); + shader_addline(buffer, "varying vec4 IN[%u];\n", GL_LIMITS(glsl_varyings) / 4); } 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[%lu];\n", GL_LIMITS(glsl_varyings) / 4); + shader_addline(buffer, "vec4 IN[%u];\n", GL_LIMITS(glsl_varyings) / 4); } }
/* Declare output register temporaries */ if(This->baseShader.limits.packed_output) { - shader_addline(buffer, "vec4 OUT[%lu];\n", This->baseShader.limits.packed_output); + shader_addline(buffer, "vec4 OUT[%u];\n", This->baseShader.limits.packed_output); }
/* Declare temporary variables */ for(i = 0; i < This->baseShader.limits.temporary; i++) { if (reg_maps->temporary[i]) - shader_addline(buffer, "vec4 R%lu;\n", i); + shader_addline(buffer, "vec4 R%u;\n", i); }
/* Declare attributes */ @@ -2009,12 +2009,12 @@ void shader_glsl_label(SHADER_OPCODE_ARG* arg) {
DWORD snum = (arg->src[0]) & WINED3DSP_REGNUM_MASK; shader_addline(arg->buffer, "}\n"); - shader_addline(arg->buffer, "void subroutine%lu () {\n", snum); + shader_addline(arg->buffer, "void subroutine%u () {\n", snum); }
void shader_glsl_call(SHADER_OPCODE_ARG* arg) { DWORD snum = (arg->src[0]) & WINED3DSP_REGNUM_MASK; - shader_addline(arg->buffer, "subroutine%lu();\n", snum); + shader_addline(arg->buffer, "subroutine%u();\n", snum); }
void shader_glsl_callnz(SHADER_OPCODE_ARG* arg) { @@ -2022,7 +2022,7 @@ void shader_glsl_callnz(SHADER_OPCODE_ARG* arg) {
DWORD snum = (arg->src[0]) & WINED3DSP_REGNUM_MASK; shader_glsl_add_src_param(arg, arg->src[1], arg->src_addr[1], WINED3DSP_WRITEMASK_0, &src1_param); - shader_addline(arg->buffer, "if (%s) subroutine%lu();\n", src1_param.param_str, snum); + shader_addline(arg->buffer, "if (%s) subroutine%u();\n", src1_param.param_str, snum); }
/********************************************* @@ -2273,7 +2273,7 @@ void pshader_glsl_texdepth(SHADER_OPCODE_ARG* arg) { * too is irrelevant, since if x = 0, any y value < 1.0 (and > 1.0 is not allowed) results in a result * >= 1.0 or < 0.0 */ - shader_addline(arg->buffer, "gl_FragDepth = clamp((%s.x / min(%s.y, 1.0)), 0.0, 1.0);\n", dst_param.reg_name, dst_param.reg_name, dst_param.reg_name); + shader_addline(arg->buffer, "gl_FragDepth = clamp((%s.x / min(%s.y, 1.0)), 0.0, 1.0);\n", dst_param.reg_name, dst_param.reg_name); }
/** Process the WINED3DSIO_TEXM3X2DEPTH instruction in GLSL: @@ -2901,7 +2901,7 @@ static GLhandleARB generate_param_reorder_function(IWineD3DVertexShader *vertexs semantics_in = ps->semantics_in;
/* This one is tricky: a 3.0 pixel shader reads from a 3.0 vertex shader */ - shader_addline(&buffer, "varying vec4 IN[%lu];\n", GL_LIMITS(glsl_varyings) / 4); + shader_addline(&buffer, "varying vec4 IN[%u];\n", GL_LIMITS(glsl_varyings) / 4); shader_addline(&buffer, "void order_ps_input(in vec4 OUT[%u]) {\n", MAX_REG_OUTPUT);
/* First, sort out position and point size. Those are not passed to the pixel shader */ @@ -2935,7 +2935,7 @@ static GLhandleARB generate_param_reorder_function(IWineD3DVertexShader *vertexs } else if(ps_major >= 3 && vs_major < 3) { semantics_in = ps->semantics_in;
- shader_addline(&buffer, "varying vec4 IN[%lu];\n", GL_LIMITS(glsl_varyings) / 4); + shader_addline(&buffer, "varying vec4 IN[%u];\n", GL_LIMITS(glsl_varyings) / 4); shader_addline(&buffer, "void order_ps_input() {\n"); /* The vertex shader wrote to the builtin varyings. There is no need to figure out position and * point size, but we depend on the optimizers kindness to find out that the pixel shader doesn't diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h index 37908a7..f1a4287 100644 --- a/dlls/wined3d/wined3d_private.h +++ b/dlls/wined3d/wined3d_private.h @@ -1745,11 +1745,17 @@ typedef struct SHADER_PARSE_STATE { DWORD texcoord_w[2]; } SHADER_PARSE_STATE;
+#ifdef __GNUC__ +#define PRINTF_ATTR(fmt,args) __attribute__((format (printf,fmt,args))) +#else +#define PRINTF_ATTR(fmt,args) +#endif + /* Base Shader utility functions. * (may move callers into the same file in the future) */ extern int shader_addline( SHADER_BUFFER* buffer, - const char* fmt, ...); + const char* fmt, ...) PRINTF_ATTR(2,3);
extern const SHADER_OPCODE* shader_get_opcode( IWineD3DBaseShader *iface,