mirror of
https://github.com/wine-mirror/wine
synced 2024-07-01 07:14:31 +00:00
wined3d: Feed WINED3D_RS_TEXTUREFACTOR through a push constant buffer.
This commit is contained in:
parent
aeb68e5df4
commit
e4f8fb3d00
|
@ -1678,8 +1678,7 @@ static void validate_state_table(struct wined3d_state_entry *state_table)
|
|||
{ 30, 33},
|
||||
{ 39, 40},
|
||||
{ 42, 47},
|
||||
{ 49, 59},
|
||||
{ 61, 135},
|
||||
{ 49, 135},
|
||||
{138, 138},
|
||||
{144, 144},
|
||||
{149, 150},
|
||||
|
|
|
@ -1894,16 +1894,12 @@ static void shader_glsl_load_constants(struct shader_glsl_priv *priv,
|
|||
if (update_mask & WINED3D_SHADER_CONST_FFP_PS)
|
||||
{
|
||||
const struct wined3d_ffp_ps_constants *constants;
|
||||
struct wined3d_color color;
|
||||
|
||||
constants = wined3d_buffer_load_sysmem(
|
||||
context_gl->c.device->push_constants[WINED3D_PUSH_CONSTANTS_PS_FFP], &context_gl->c);
|
||||
|
||||
if (prog->ps.tex_factor_location != -1)
|
||||
{
|
||||
wined3d_color_from_d3dcolor(&color, state->render_states[WINED3D_RS_TEXTUREFACTOR]);
|
||||
GL_EXTCALL(glUniform4fv(prog->ps.tex_factor_location, 1, &color.r));
|
||||
}
|
||||
GL_EXTCALL(glUniform4fv(prog->ps.tex_factor_location, 1, &constants->texture_factor.r));
|
||||
|
||||
if (state->render_states[WINED3D_RS_SPECULARENABLE])
|
||||
GL_EXTCALL(glUniform4f(prog->ps.specular_enable_location, 1.0f, 1.0f, 1.0f, 0.0f));
|
||||
|
@ -12355,7 +12351,6 @@ static const struct wined3d_state_entry_template glsl_fragment_pipe_state_templa
|
|||
{
|
||||
{STATE_VDECL, {STATE_VDECL, glsl_fragment_pipe_vdecl }, WINED3D_GL_EXT_NONE },
|
||||
{STATE_SHADER(WINED3D_SHADER_TYPE_VERTEX), {STATE_SHADER(WINED3D_SHADER_TYPE_VERTEX), glsl_fragment_pipe_vs }, WINED3D_GL_EXT_NONE },
|
||||
{STATE_RENDER(WINED3D_RS_TEXTUREFACTOR), {STATE_RENDER(WINED3D_RS_TEXTUREFACTOR), glsl_fragment_pipe_invalidate_constants}, WINED3D_GL_EXT_NONE },
|
||||
{STATE_TEXTURESTAGE(0, WINED3D_TSS_COLOR_OP), {STATE_SHADER(WINED3D_SHADER_TYPE_PIXEL), NULL }, WINED3D_GL_EXT_NONE },
|
||||
{STATE_TEXTURESTAGE(0, WINED3D_TSS_COLOR_ARG1), {STATE_SHADER(WINED3D_SHADER_TYPE_PIXEL), NULL }, WINED3D_GL_EXT_NONE },
|
||||
{STATE_TEXTURESTAGE(0, WINED3D_TSS_COLOR_ARG2), {STATE_SHADER(WINED3D_SHADER_TYPE_PIXEL), NULL }, WINED3D_GL_EXT_NONE },
|
||||
|
|
|
@ -1260,7 +1260,6 @@ static const struct wined3d_state_entry_template spirv_fragment_pipe_vk_fp_state
|
|||
{STATE_RENDER(WINED3D_RS_FOGEND), {STATE_RENDER(WINED3D_RS_FOGEND), state_nop}},
|
||||
{STATE_RENDER(WINED3D_RS_FOGDENSITY), {STATE_RENDER(WINED3D_RS_FOGDENSITY), state_nop}},
|
||||
{STATE_RENDER(WINED3D_RS_COLORKEYENABLE), {STATE_RENDER(WINED3D_RS_COLORKEYENABLE), state_nop}},
|
||||
{STATE_RENDER(WINED3D_RS_TEXTUREFACTOR), {STATE_RENDER(WINED3D_RS_TEXTUREFACTOR), state_nop}},
|
||||
{STATE_RENDER(WINED3D_RS_FOGVERTEXMODE), {STATE_RENDER(WINED3D_RS_FOGVERTEXMODE), state_nop}},
|
||||
{STATE_RENDER(WINED3D_RS_POINTSPRITEENABLE), {STATE_RENDER(WINED3D_RS_POINTSPRITEENABLE), state_nop}},
|
||||
{STATE_RENDER(WINED3D_RS_SRGBWRITEENABLE), {STATE_RENDER(WINED3D_RS_SRGBWRITEENABLE), state_nop}},
|
||||
|
|
|
@ -1532,11 +1532,22 @@ void CDECL wined3d_stateblock_set_render_state(struct wined3d_stateblock *stateb
|
|||
stateblock->stateblock_state.rs[state] = value;
|
||||
stateblock->changed.renderState[state >> 5] |= 1u << (state & 0x1f);
|
||||
|
||||
if (state == WINED3D_RS_POINTSIZE
|
||||
&& (value == WINED3D_ALPHA_TO_COVERAGE_ENABLE || value == WINED3D_ALPHA_TO_COVERAGE_DISABLE))
|
||||
switch (state)
|
||||
{
|
||||
stateblock->changed.alpha_to_coverage = 1;
|
||||
stateblock->stateblock_state.alpha_to_coverage = (value == WINED3D_ALPHA_TO_COVERAGE_ENABLE);
|
||||
case WINED3D_RS_POINTSIZE:
|
||||
if (value == WINED3D_ALPHA_TO_COVERAGE_ENABLE || value == WINED3D_ALPHA_TO_COVERAGE_DISABLE)
|
||||
{
|
||||
stateblock->changed.alpha_to_coverage = 1;
|
||||
stateblock->stateblock_state.alpha_to_coverage = (value == WINED3D_ALPHA_TO_COVERAGE_ENABLE);
|
||||
}
|
||||
break;
|
||||
|
||||
case WINED3D_RS_TEXTUREFACTOR:
|
||||
stateblock->changed.ffp_ps_constants = 1;
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -2805,6 +2816,7 @@ void CDECL wined3d_device_apply_stateblock(struct wined3d_device *device,
|
|||
break;
|
||||
|
||||
case WINED3D_RS_ADAPTIVETESS_Y:
|
||||
case WINED3D_RS_TEXTUREFACTOR:
|
||||
break;
|
||||
|
||||
case WINED3D_RS_ANTIALIAS:
|
||||
|
@ -3312,6 +3324,8 @@ void CDECL wined3d_device_apply_stateblock(struct wined3d_device *device,
|
|||
for (i = 0; i < WINED3D_MAX_FFP_TEXTURES; ++i)
|
||||
wined3d_color_from_d3dcolor(&constants.texture_constants[i], state->texture_states[i][WINED3D_TSS_CONSTANT]);
|
||||
|
||||
wined3d_color_from_d3dcolor(&constants.texture_factor, state->rs[WINED3D_RS_TEXTUREFACTOR]);
|
||||
|
||||
wined3d_device_context_push_constants(context, WINED3D_PUSH_CONSTANTS_PS_FFP,
|
||||
WINED3D_SHADER_CONST_FFP_PS, 0, sizeof(constants), &constants);
|
||||
}
|
||||
|
|
|
@ -2770,6 +2770,7 @@ BOOL wined3d_get_app_name(char *app_name, unsigned int app_name_size);
|
|||
struct wined3d_ffp_ps_constants
|
||||
{
|
||||
struct wined3d_color texture_constants[WINED3D_MAX_FFP_TEXTURES];
|
||||
struct wined3d_color texture_factor;
|
||||
};
|
||||
|
||||
enum wined3d_push_constants
|
||||
|
|
Loading…
Reference in New Issue
Block a user