wined3d: Explicitly pass shader_data and reg_maps to reserved_vs_const().
This commit is contained in:
parent
a564101630
commit
0405733ff7
@ -344,15 +344,14 @@ static BOOL need_helper_const(const struct arb_vshader_private *shader_data,
|
|||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
static unsigned int reserved_vs_const(IWineD3DVertexShaderImpl *shader, const struct wined3d_gl_info *gl_info)
|
static unsigned int reserved_vs_const(const struct arb_vshader_private *shader_data,
|
||||||
|
const struct shader_reg_maps *reg_maps, const struct wined3d_gl_info *gl_info)
|
||||||
{
|
{
|
||||||
unsigned int ret = 1;
|
unsigned int ret = 1;
|
||||||
/* We use one PARAM for the pos fixup, and in some cases one to load
|
/* We use one PARAM for the pos fixup, and in some cases one to load
|
||||||
* some immediate values into the shader. */
|
* some immediate values into the shader. */
|
||||||
if (need_helper_const(shader->baseShader.backend_data,
|
if (need_helper_const(shader_data, reg_maps, gl_info)) ++ret;
|
||||||
&shader->baseShader.reg_maps, gl_info)) ++ret;
|
if (need_rel_addr_const(shader_data, reg_maps, gl_info)) ++ret;
|
||||||
if (need_rel_addr_const(shader->baseShader.backend_data,
|
|
||||||
&shader->baseShader.reg_maps, gl_info)) ++ret;
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -725,6 +724,7 @@ static DWORD shader_generate_arb_declarations(IWineD3DBaseShader *iface, const s
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
const struct arb_vshader_private *shader_data = This->baseShader.backend_data;
|
||||||
max_constantsF = gl_info->limits.arb_vs_native_constants;
|
max_constantsF = gl_info->limits.arb_vs_native_constants;
|
||||||
/* 96 is the minimum MAX_PROGRAM_ENV_PARAMETERS_ARB value.
|
/* 96 is the minimum MAX_PROGRAM_ENV_PARAMETERS_ARB value.
|
||||||
* Also prevents max_constantsF from becoming less than 0 and
|
* Also prevents max_constantsF from becoming less than 0 and
|
||||||
@ -735,7 +735,7 @@ static DWORD shader_generate_arb_declarations(IWineD3DBaseShader *iface, const s
|
|||||||
if(This->baseShader.reg_maps.usesrelconstF) {
|
if(This->baseShader.reg_maps.usesrelconstF) {
|
||||||
DWORD highest_constf = 0, clip_limit;
|
DWORD highest_constf = 0, clip_limit;
|
||||||
|
|
||||||
max_constantsF -= reserved_vs_const((IWineD3DVertexShaderImpl *)This, gl_info);
|
max_constantsF -= reserved_vs_const(shader_data, reg_maps, gl_info);
|
||||||
max_constantsF -= count_bits(This->baseShader.reg_maps.integer_constants);
|
max_constantsF -= count_bits(This->baseShader.reg_maps.integer_constants);
|
||||||
|
|
||||||
for(i = 0; i < This->baseShader.limits.constant_float; i++)
|
for(i = 0; i < This->baseShader.limits.constant_float; i++)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user