vkd3d-shader/tpf: Handle 'movc' in STAT.

Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
This commit is contained in:
Nikolay Sivov 2024-09-12 22:36:25 +02:00 committed by Henri Verbeet
parent 7bd6c6b172
commit 9e4b2f5a1b
Notes: Henri Verbeet 2024-09-13 16:06:12 +02:00
Approved-by: Henri Verbeet (@hverbeet)
Merge-Request: https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/1069

View File

@ -622,6 +622,7 @@ enum vkd3d_sm4_stat_field
VKD3D_STAT_UNUSED = 0, VKD3D_STAT_UNUSED = 0,
VKD3D_STAT_INSTR_COUNT, VKD3D_STAT_INSTR_COUNT,
VKD3D_STAT_MOV, VKD3D_STAT_MOV,
VKD3D_STAT_MOVC,
VKD3D_STAT_CONV, VKD3D_STAT_CONV,
VKD3D_STAT_FLOAT, VKD3D_STAT_FLOAT,
VKD3D_STAT_INT, VKD3D_STAT_INT,
@ -1693,6 +1694,10 @@ static void init_sm4_lookup_tables(struct vkd3d_sm4_lookup_tables *lookup)
static const struct vkd3d_sm4_stat_field_info stat_field_table[] = static const struct vkd3d_sm4_stat_field_info stat_field_table[] =
{ {
{VKD3D_SM4_OP_MOV, VKD3D_STAT_MOV}, {VKD3D_SM4_OP_MOV, VKD3D_STAT_MOV},
{VKD3D_SM4_OP_MOVC, VKD3D_STAT_MOVC},
{VKD3D_SM5_OP_DMOV, VKD3D_STAT_MOV},
{VKD3D_SM5_OP_DMOVC, VKD3D_STAT_MOVC},
{VKD3D_SM4_OP_ITOF, VKD3D_STAT_CONV}, {VKD3D_SM4_OP_ITOF, VKD3D_STAT_CONV},
{VKD3D_SM4_OP_FTOI, VKD3D_STAT_CONV}, {VKD3D_SM4_OP_FTOI, VKD3D_STAT_CONV},
{VKD3D_SM4_OP_FTOU, VKD3D_STAT_CONV}, {VKD3D_SM4_OP_FTOU, VKD3D_STAT_CONV},
@ -6305,7 +6310,7 @@ static void write_sm4_stat(struct hlsl_ctx *ctx, const struct sm4_stat *stat, st
put_u32(&buffer, 0); /* Texture bias instructions */ put_u32(&buffer, 0); /* Texture bias instructions */
put_u32(&buffer, 0); /* Texture gradient instructions */ put_u32(&buffer, 0); /* Texture gradient instructions */
put_u32(&buffer, stat->fields[VKD3D_STAT_MOV]); put_u32(&buffer, stat->fields[VKD3D_STAT_MOV]);
put_u32(&buffer, 0); /* MOVC instructions */ put_u32(&buffer, stat->fields[VKD3D_STAT_MOVC]);
put_u32(&buffer, stat->fields[VKD3D_STAT_CONV]); put_u32(&buffer, stat->fields[VKD3D_STAT_CONV]);
put_u32(&buffer, 0); /* Bitwise instructions */ put_u32(&buffer, 0); /* Bitwise instructions */
put_u32(&buffer, 0); /* Input primitive */ put_u32(&buffer, 0); /* Input primitive */