From: Nikolay Sivov <nsivov(a)codeweavers.com> Signed-off-by: Nikolay Sivov <nsivov(a)codeweavers.com> --- dlls/d3dx9_36/preshader.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/dlls/d3dx9_36/preshader.c b/dlls/d3dx9_36/preshader.c index 8a7dfd76935..c19c30d428b 100644 --- a/dlls/d3dx9_36/preshader.c +++ b/dlls/d3dx9_36/preshader.c @@ -144,6 +144,7 @@ static double pres_div(double *args, int n) {return 0.0;} #define FOURCC_CLIT 0x54494c43 #define FOURCC_FXLC 0x434c5846 #define FOURCC_PRSI 0x49535250 +#define FOURCC_TX_1 0x54580100 #define PRES_SIGN 0x46580000 struct op_info @@ -1110,12 +1111,14 @@ static HRESULT parse_preshader(struct d3dx_preshader *pres, unsigned int *ptr, u struct d3dx_parameters_store *parameters) { unsigned int *p; - unsigned int i, j, const_count; + unsigned int i, j, const_count, magic; double *dconst; HRESULT hr; unsigned int saved_word; unsigned int section_size; + magic = *ptr; + TRACE("Preshader version %#x.\n", *ptr & 0xffff); if (!count) @@ -1186,6 +1189,8 @@ static HRESULT parse_preshader(struct d3dx_preshader *pres, unsigned int *ptr, u return D3DXERR_INVALIDDATA; } pres->regs.table_sizes[PRES_REGTAB_IMMED] = get_reg_offset(PRES_REGTAB_IMMED, const_count); + if (magic == FOURCC_TX_1) + pres->regs.table_sizes[PRES_REGTAB_INPUT] = 2; update_table_sizes_consts(pres->regs.table_sizes, &pres->inputs); for (i = 0; i < pres->ins_count; ++i) -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/1682