Module: wine Branch: master Commit: a0ed743461b0fd6a7f124770cc96f96104d58e23 URL: https://gitlab.winehq.org/wine/wine/-/commit/a0ed743461b0fd6a7f124770cc96f96...
Author: Nikolay Sivov nsivov@codeweavers.com Date: Sat Dec 3 10:00:19 2022 +0300
d3dx9/preshader: Set input table size for texture shaders.
Signed-off-by: Nikolay Sivov nsivov@codeweavers.com
---
dlls/d3dx9_36/preshader.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-)
diff --git a/dlls/d3dx9_36/preshader.c b/dlls/d3dx9_36/preshader.c index 8a7dfd76935..fb0d10cc0c9 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,13 +1111,15 @@ 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;
- TRACE("Preshader version %#x.\n", *ptr & 0xffff); + magic = *ptr; + + TRACE("Preshader version %#x.\n", *ptr);
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)