On 03/15/2016 05:54 AM, Matteo Bruni wrote:
+static float regstore_get_float(struct d3dx_regstore *rs, unsigned int table, unsigned int offset) +{
- BYTE *p;
- p = (BYTE *)rs->tables[table] + table_info[table].value_size * offset;
- switch (table_info[table].type)
- {
case PRES_VT_FLOAT : return *(float *)p;
case PRES_VT_DOUBLE: return *(double *)p;
case PRES_VT_INT : return *(int *)p;
case PRES_VT_BOOL : return *(BOOL *)p ? 1.0f : -0.0f;
I guess that -0.0f comes from some test?
No, I just saw a lot of constructs in preshader disassembly like "cmp r1.x, c0.x, 1.0, -0.0", somehow they like to put -0.0 for immediate constants for such sort of cmp, and was thinking of this when I was writing it. There is currently no usecase I know for preshader inputting booleans or ints, so I can't test this. So I think this just need to be changed to normal 0.0.
+HRESULT d3dx_param_eval_get_shader_parameters(struct d3dx_param_eval *peval, struct d3dx_parameter ***param,
unsigned int *nparam, D3DXCONSTANT_DESC **cdesc)
+{
- *nparam = peval->shader_inputs.ninputs;
- *param = peval->shader_inputs.inputs_param;
- *cdesc = peval->shader_inputs.inputs;
- return D3D_OK;
+} You don't use this function in this patch either. Also it doesn't seem useful, it isn't an improvement to just assigning those three pointers directly in the caller IMO.
I would like to remove this function but then I will need to put the param_eval structure into shared header file (now there is only a forward declaration). Is it OK?