vkd3d-shader: Fix modifier handling.
This is a set of flags, so we should treat it as such. Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
This commit is contained in:
parent
1fa3686638
commit
bc7426ceb0
|
@ -1538,30 +1538,19 @@ static bool shader_sm4_read_param(struct vkd3d_sm4_data *priv, const DWORD **ptr
|
||||||
}
|
}
|
||||||
m = *(*ptr)++;
|
m = *(*ptr)++;
|
||||||
|
|
||||||
switch (m)
|
switch (m & 0xc0)
|
||||||
{
|
{
|
||||||
case 0x41:
|
case 0x00: *modifier = VKD3DSPSM_NONE; break;
|
||||||
*modifier = VKD3DSPSM_NEG;
|
case 0x40: *modifier = VKD3DSPSM_NEG; break;
|
||||||
break;
|
case 0x80: *modifier = VKD3DSPSM_ABS; break;
|
||||||
|
case 0xc0: *modifier = VKD3DSPSM_ABSNEG; break;
|
||||||
case 0x81:
|
|
||||||
*modifier = VKD3DSPSM_ABS;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 0xc1:
|
|
||||||
*modifier = VKD3DSPSM_ABSNEG;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 0x20001:
|
|
||||||
param->modifier = VKD3DSPRM_NONUNIFORM;
|
|
||||||
*modifier = VKD3DSPSM_NONE;
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
|
||||||
FIXME("Skipping modifier 0x%08x.\n", m);
|
|
||||||
*modifier = VKD3DSPSM_NONE;
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (m & 0x20000)
|
||||||
|
param->modifier = VKD3DSPRM_NONUNIFORM;
|
||||||
|
|
||||||
|
if ((m &= ~(0x200c1)))
|
||||||
|
FIXME("Skipping modifier 0x%08x.\n", m);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue