mirror of
https://github.com/reactos/wine.git
synced 2025-02-16 19:10:35 +00:00
wined3d: Add printf format checking to the shader_addline function and fix resulting warnings.
This commit is contained in:
parent
218de935d1
commit
57d1548b51
@ -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:
|
||||
|
@ -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
|
||||
|
@ -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,
|
||||
|
Loading…
x
Reference in New Issue
Block a user