From: Nikolay Sivov nsivov@codeweavers.com
Signed-off-by: Nikolay Sivov nsivov@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)