wined3d: Move program_dump_decl_usage into baseshader.
This commit is contained in:
parent
a87520036f
commit
5308e026d1
|
@ -159,4 +159,79 @@ void shader_get_registers_used(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void shader_program_dump_decl_usage(
|
||||||
|
DWORD decl,
|
||||||
|
DWORD param) {
|
||||||
|
|
||||||
|
DWORD regtype = shader_get_regtype(param);
|
||||||
|
TRACE("dcl_");
|
||||||
|
|
||||||
|
if (regtype == D3DSPR_SAMPLER) {
|
||||||
|
DWORD ttype = decl & D3DSP_TEXTURETYPE_MASK;
|
||||||
|
|
||||||
|
switch (ttype) {
|
||||||
|
case D3DSTT_2D: TRACE("2d"); break;
|
||||||
|
case D3DSTT_CUBE: TRACE("cube"); break;
|
||||||
|
case D3DSTT_VOLUME: TRACE("volume"); break;
|
||||||
|
default: TRACE("unknown_ttype(%08lx)", ttype);
|
||||||
|
}
|
||||||
|
|
||||||
|
} else {
|
||||||
|
|
||||||
|
DWORD usage = decl & D3DSP_DCL_USAGE_MASK;
|
||||||
|
DWORD idx = (decl & D3DSP_DCL_USAGEINDEX_MASK) >> D3DSP_DCL_USAGEINDEX_SHIFT;
|
||||||
|
|
||||||
|
switch(usage) {
|
||||||
|
case D3DDECLUSAGE_POSITION:
|
||||||
|
TRACE("%s%ld", "position", idx);
|
||||||
|
break;
|
||||||
|
case D3DDECLUSAGE_BLENDINDICES:
|
||||||
|
TRACE("%s", "blend");
|
||||||
|
break;
|
||||||
|
case D3DDECLUSAGE_BLENDWEIGHT:
|
||||||
|
TRACE("%s", "weight");
|
||||||
|
break;
|
||||||
|
case D3DDECLUSAGE_NORMAL:
|
||||||
|
TRACE("%s%ld", "normal", idx);
|
||||||
|
break;
|
||||||
|
case D3DDECLUSAGE_PSIZE:
|
||||||
|
TRACE("%s", "psize");
|
||||||
|
break;
|
||||||
|
case D3DDECLUSAGE_COLOR:
|
||||||
|
if(idx == 0) {
|
||||||
|
TRACE("%s", "color");
|
||||||
|
} else {
|
||||||
|
TRACE("%s%ld", "specular", (idx - 1));
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case D3DDECLUSAGE_TEXCOORD:
|
||||||
|
TRACE("%s%ld", "texture", idx);
|
||||||
|
break;
|
||||||
|
case D3DDECLUSAGE_TANGENT:
|
||||||
|
TRACE("%s", "tangent");
|
||||||
|
break;
|
||||||
|
case D3DDECLUSAGE_BINORMAL:
|
||||||
|
TRACE("%s", "binormal");
|
||||||
|
break;
|
||||||
|
case D3DDECLUSAGE_TESSFACTOR:
|
||||||
|
TRACE("%s", "tessfactor");
|
||||||
|
break;
|
||||||
|
case D3DDECLUSAGE_POSITIONT:
|
||||||
|
TRACE("%s%ld", "positionT", idx);
|
||||||
|
break;
|
||||||
|
case D3DDECLUSAGE_FOG:
|
||||||
|
TRACE("%s", "fog");
|
||||||
|
break;
|
||||||
|
case D3DDECLUSAGE_DEPTH:
|
||||||
|
TRACE("%s", "depth");
|
||||||
|
break;
|
||||||
|
case D3DDECLUSAGE_SAMPLE:
|
||||||
|
TRACE("%s", "sample");
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
FIXME("unknown_semantics(%08lx)", usage);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/* TODO: Move other shared code here */
|
/* TODO: Move other shared code here */
|
||||||
|
|
|
@ -962,7 +962,7 @@ void pshader_set_version(
|
||||||
This->baseShader.limits.constant_int = 0;
|
This->baseShader.limits.constant_int = 0;
|
||||||
This->baseShader.limits.constant_bool = 0;
|
This->baseShader.limits.constant_bool = 0;
|
||||||
This->baseShader.limits.texture = 8;
|
This->baseShader.limits.texture = 8;
|
||||||
FIXME("Unrecognized pixel shader version %lu!\n", version);
|
FIXME("Unrecognized pixel shader version %lx!\n", version);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1606,80 +1606,6 @@ inline static void pshader_program_dump_ps_param(const DWORD param, int input) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
inline static void pshader_program_dump_decl_usage(
|
|
||||||
IWineD3DPixelShaderImpl *This, DWORD decl, DWORD param) {
|
|
||||||
|
|
||||||
DWORD regtype = shader_get_regtype(param);
|
|
||||||
TRACE("dcl_");
|
|
||||||
|
|
||||||
if (regtype == D3DSPR_SAMPLER) {
|
|
||||||
DWORD ttype = decl & D3DSP_TEXTURETYPE_MASK;
|
|
||||||
|
|
||||||
switch (ttype) {
|
|
||||||
case D3DSTT_2D: TRACE("2d "); break;
|
|
||||||
case D3DSTT_CUBE: TRACE("cube "); break;
|
|
||||||
case D3DSTT_VOLUME: TRACE("volume "); break;
|
|
||||||
default: TRACE("unknown_ttype(%08lx) ", ttype);
|
|
||||||
}
|
|
||||||
|
|
||||||
} else {
|
|
||||||
|
|
||||||
DWORD usage = decl & D3DSP_DCL_USAGE_MASK;
|
|
||||||
DWORD idx = (decl & D3DSP_DCL_USAGEINDEX_MASK) >> D3DSP_DCL_USAGEINDEX_SHIFT;
|
|
||||||
|
|
||||||
switch(usage) {
|
|
||||||
case D3DDECLUSAGE_POSITION:
|
|
||||||
TRACE("%s%ld ", "position", idx);
|
|
||||||
break;
|
|
||||||
case D3DDECLUSAGE_BLENDINDICES:
|
|
||||||
TRACE("%s ", "blend");
|
|
||||||
break;
|
|
||||||
case D3DDECLUSAGE_BLENDWEIGHT:
|
|
||||||
TRACE("%s ", "weight");
|
|
||||||
break;
|
|
||||||
case D3DDECLUSAGE_NORMAL:
|
|
||||||
TRACE("%s%ld ", "normal", idx);
|
|
||||||
break;
|
|
||||||
case D3DDECLUSAGE_PSIZE:
|
|
||||||
TRACE("%s ", "psize");
|
|
||||||
break;
|
|
||||||
case D3DDECLUSAGE_COLOR:
|
|
||||||
if(idx == 0) {
|
|
||||||
TRACE("%s ", "color");
|
|
||||||
} else {
|
|
||||||
TRACE("%s%ld ", "specular", (idx - 1));
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case D3DDECLUSAGE_TEXCOORD:
|
|
||||||
TRACE("%s%ld ", "texture", idx);
|
|
||||||
break;
|
|
||||||
case D3DDECLUSAGE_TANGENT:
|
|
||||||
TRACE("%s ", "tangent");
|
|
||||||
break;
|
|
||||||
case D3DDECLUSAGE_BINORMAL:
|
|
||||||
TRACE("%s ", "binormal");
|
|
||||||
break;
|
|
||||||
case D3DDECLUSAGE_TESSFACTOR:
|
|
||||||
TRACE("%s ", "tessfactor");
|
|
||||||
break;
|
|
||||||
case D3DDECLUSAGE_POSITIONT:
|
|
||||||
TRACE("%s%ld ", "positionT", idx);
|
|
||||||
break;
|
|
||||||
case D3DDECLUSAGE_FOG:
|
|
||||||
TRACE("%s ", "fog");
|
|
||||||
break;
|
|
||||||
case D3DDECLUSAGE_DEPTH:
|
|
||||||
TRACE("%s ", "depth");
|
|
||||||
break;
|
|
||||||
case D3DDECLUSAGE_SAMPLE:
|
|
||||||
TRACE("%s ", "sample");
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
FIXME("Unrecognised dcl %08lx", usage);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
HRESULT WINAPI IWineD3DPixelShaderImpl_SetFunction(IWineD3DPixelShader *iface, CONST DWORD *pFunction) {
|
HRESULT WINAPI IWineD3DPixelShaderImpl_SetFunction(IWineD3DPixelShader *iface, CONST DWORD *pFunction) {
|
||||||
IWineD3DPixelShaderImpl *This = (IWineD3DPixelShaderImpl *)iface;
|
IWineD3DPixelShaderImpl *This = (IWineD3DPixelShaderImpl *)iface;
|
||||||
const DWORD* pToken = pFunction;
|
const DWORD* pToken = pFunction;
|
||||||
|
@ -1724,12 +1650,23 @@ HRESULT WINAPI IWineD3DPixelShaderImpl_SetFunction(IWineD3DPixelShader *iface, C
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
if (curOpcode->opcode == D3DSIO_DCL) {
|
if (curOpcode->opcode == D3DSIO_DCL) {
|
||||||
pshader_program_dump_decl_usage(This, *pToken, *(pToken + 1));
|
DWORD usage = *pToken;
|
||||||
++pToken;
|
DWORD param = *(pToken + 1);
|
||||||
++len;
|
DWORD regtype = shader_get_regtype(param);
|
||||||
pshader_program_dump_ps_param(*pToken, 0);
|
|
||||||
++pToken;
|
/* Only print extended declaration for samplers or 3.0 input registers */
|
||||||
++len;
|
if (regtype == D3DSPR_SAMPLER ||
|
||||||
|
(This->baseShader.version >= 30 && regtype == D3DSPR_INPUT))
|
||||||
|
shader_program_dump_decl_usage(usage, param);
|
||||||
|
else
|
||||||
|
TRACE("dcl");
|
||||||
|
|
||||||
|
pshader_program_dump_ins_modifiers(param);
|
||||||
|
TRACE(" ");
|
||||||
|
pshader_program_dump_ps_param(param, 0);
|
||||||
|
pToken += 2;
|
||||||
|
len += 2;
|
||||||
|
|
||||||
} else
|
} else
|
||||||
if (curOpcode->opcode == D3DSIO_DEF) {
|
if (curOpcode->opcode == D3DSIO_DEF) {
|
||||||
TRACE("def c%lu = ", *pToken & 0xFF);
|
TRACE("def c%lu = ", *pToken & 0xFF);
|
||||||
|
|
|
@ -647,80 +647,6 @@ inline static void vshader_program_dump_vs_param(const DWORD param, int input) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
inline static void vshader_program_dump_decl_usage(
|
|
||||||
IWineD3DVertexShaderImpl *This, DWORD decl, DWORD param) {
|
|
||||||
DWORD regtype = shader_get_regtype(param);
|
|
||||||
|
|
||||||
TRACE("dcl_");
|
|
||||||
|
|
||||||
if (regtype == D3DSPR_SAMPLER) {
|
|
||||||
DWORD ttype = decl & D3DSP_TEXTURETYPE_MASK;
|
|
||||||
|
|
||||||
switch (ttype) {
|
|
||||||
case D3DSTT_2D: TRACE("2d "); break;
|
|
||||||
case D3DSTT_CUBE: TRACE("cube "); break;
|
|
||||||
case D3DSTT_VOLUME: TRACE("volume "); break;
|
|
||||||
default: TRACE("unknown_ttype(%08lx) ", ttype);
|
|
||||||
}
|
|
||||||
|
|
||||||
} else {
|
|
||||||
|
|
||||||
DWORD usage = decl & D3DSP_DCL_USAGE_MASK;
|
|
||||||
DWORD idx = (decl & D3DSP_DCL_USAGEINDEX_MASK) >> D3DSP_DCL_USAGEINDEX_SHIFT;
|
|
||||||
|
|
||||||
switch(usage) {
|
|
||||||
case D3DDECLUSAGE_POSITION:
|
|
||||||
TRACE("%s%ld ", "position", idx);
|
|
||||||
break;
|
|
||||||
case D3DDECLUSAGE_BLENDINDICES:
|
|
||||||
TRACE("%s ", "blend");
|
|
||||||
break;
|
|
||||||
case D3DDECLUSAGE_BLENDWEIGHT:
|
|
||||||
TRACE("%s ", "weight");
|
|
||||||
break;
|
|
||||||
case D3DDECLUSAGE_NORMAL:
|
|
||||||
TRACE("%s%ld ", "normal", idx);
|
|
||||||
break;
|
|
||||||
case D3DDECLUSAGE_PSIZE:
|
|
||||||
TRACE("%s ", "psize");
|
|
||||||
break;
|
|
||||||
case D3DDECLUSAGE_COLOR:
|
|
||||||
if(idx == 0) {
|
|
||||||
TRACE("%s ", "color");
|
|
||||||
} else {
|
|
||||||
TRACE("%s ", "specular");
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case D3DDECLUSAGE_TEXCOORD:
|
|
||||||
TRACE("%s%ld ", "texture", idx);
|
|
||||||
break;
|
|
||||||
case D3DDECLUSAGE_TANGENT:
|
|
||||||
TRACE("%s ", "tangent");
|
|
||||||
break;
|
|
||||||
case D3DDECLUSAGE_BINORMAL:
|
|
||||||
TRACE("%s ", "binormal");
|
|
||||||
break;
|
|
||||||
case D3DDECLUSAGE_TESSFACTOR:
|
|
||||||
TRACE("%s ", "tessfactor");
|
|
||||||
break;
|
|
||||||
case D3DDECLUSAGE_POSITIONT:
|
|
||||||
TRACE("%s%ld ", "positionT", idx);
|
|
||||||
break;
|
|
||||||
case D3DDECLUSAGE_FOG:
|
|
||||||
TRACE("%s ", "fog");
|
|
||||||
break;
|
|
||||||
case D3DDECLUSAGE_DEPTH:
|
|
||||||
TRACE("%s ", "depth");
|
|
||||||
break;
|
|
||||||
case D3DDECLUSAGE_SAMPLE:
|
|
||||||
TRACE("%s ", "sample");
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
FIXME("Unrecognised dcl %08lx", usage);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
inline static BOOL vshader_is_version_token(DWORD token) {
|
inline static BOOL vshader_is_version_token(DWORD token) {
|
||||||
return 0xFFFE0000 == (token & 0xFFFE0000);
|
return 0xFFFE0000 == (token & 0xFFFE0000);
|
||||||
}
|
}
|
||||||
|
@ -1069,7 +995,7 @@ void vshader_set_version(
|
||||||
This->baseShader.limits.constant_bool = 0;
|
This->baseShader.limits.constant_bool = 0;
|
||||||
This->baseShader.limits.constant_int = 0;
|
This->baseShader.limits.constant_int = 0;
|
||||||
This->baseShader.limits.address = 1;
|
This->baseShader.limits.address = 1;
|
||||||
FIXME("Unrecognized vertex shader version %lu!\n", version);
|
FIXME("Unrecognized vertex shader version %lx!\n", version);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1821,7 +1747,8 @@ HRESULT WINAPI IWineD3DVertexShaderImpl_SetFunction(IWineD3DVertexShader *iface,
|
||||||
DWORD param = *(pToken + 1);
|
DWORD param = *(pToken + 1);
|
||||||
|
|
||||||
parse_decl_usage(This, usage, param & D3DSP_REGNUM_MASK);
|
parse_decl_usage(This, usage, param & D3DSP_REGNUM_MASK);
|
||||||
vshader_program_dump_decl_usage(This, usage, param);
|
shader_program_dump_decl_usage(usage, param);
|
||||||
|
TRACE(" ");
|
||||||
vshader_program_dump_vs_param(param, 0);
|
vshader_program_dump_vs_param(param, 0);
|
||||||
pToken += 2;
|
pToken += 2;
|
||||||
len += 2;
|
len += 2;
|
||||||
|
|
|
@ -1275,6 +1275,10 @@ extern void shader_get_registers_used(
|
||||||
DWORD* tempsUsed,
|
DWORD* tempsUsed,
|
||||||
DWORD* texUsed);
|
DWORD* texUsed);
|
||||||
|
|
||||||
|
extern void shader_program_dump_decl_usage(
|
||||||
|
DWORD dcl,
|
||||||
|
DWORD param);
|
||||||
|
|
||||||
inline static int shader_get_regtype(const DWORD param) {
|
inline static int shader_get_regtype(const DWORD param) {
|
||||||
return (((param & D3DSP_REGTYPE_MASK) >> D3DSP_REGTYPE_SHIFT) |
|
return (((param & D3DSP_REGTYPE_MASK) >> D3DSP_REGTYPE_SHIFT) |
|
||||||
((param & D3DSP_REGTYPE_MASK2) >> D3DSP_REGTYPE_SHIFT2));
|
((param & D3DSP_REGTYPE_MASK2) >> D3DSP_REGTYPE_SHIFT2));
|
||||||
|
|
Loading…
Reference in New Issue