Module: wine Branch: master Commit: b1c5c9b2262db3d64e7c6f65dfa9c136bfe02d0d URL: https://source.winehq.org/git/wine.git/?a=commit;h=b1c5c9b2262db3d64e7c6f65d...
Author: Henri Verbeet hverbeet@codeweavers.com Date: Thu Jun 6 17:39:04 2019 +0430
wined3d: Move the material tracking fields from struct wined3d_context to struct wined3d_context_gl.
Signed-off-by: Henri Verbeet hverbeet@codeweavers.com Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/wined3d/context.c | 8 ++++--- dlls/wined3d/state.c | 49 +++++++++++++++--------------------------- dlls/wined3d/wined3d_private.h | 14 ++++++------ 3 files changed, 29 insertions(+), 42 deletions(-)
diff --git a/dlls/wined3d/context.c b/dlls/wined3d/context.c index 9784a48..129d4da 100644 --- a/dlls/wined3d/context.c +++ b/dlls/wined3d/context.c @@ -4552,7 +4552,7 @@ static void draw_primitive_immediate_mode(struct wined3d_context_gl *context_gl, else gl_info->gl_ops.gl.p_glNormal3f(0.0f, 0.0f, 0.0f);
- untracked_material_count = context_gl->c.num_untracked_materials; + untracked_material_count = context_gl->untracked_material_count; if (si->use_map & (1u << WINED3D_FFP_DIFFUSE)) { element = &si->elements[WINED3D_FFP_DIFFUSE]; @@ -4665,7 +4665,7 @@ static void draw_primitive_immediate_mode(struct wined3d_context_gl *context_gl, for (i = 0; i < untracked_material_count; ++i) { gl_info->gl_ops.gl.p_glMaterialfv(GL_FRONT_AND_BACK, - context_gl->c.untracked_materials[i], &color.r); + context_gl->untracked_materials[i], &color.r); } } } @@ -4794,6 +4794,7 @@ void draw_primitive(struct wined3d_device *device, const struct wined3d_state *s struct wined3d_stream_info si_emulated; struct wined3d_fence *ib_fence = NULL; const struct wined3d_gl_info *gl_info; + struct wined3d_context_gl *context_gl; struct wined3d_context *context; unsigned int i, idx_size = 0; const void *idx_data = NULL; @@ -4820,6 +4821,7 @@ void draw_primitive(struct wined3d_device *device, const struct wined3d_state *s WARN("Invalid context, skipping draw.\n"); return; } + context_gl = wined3d_context_gl(context); gl_info = context->gl_info;
if (!use_transform_feedback(state)) @@ -4898,7 +4900,7 @@ void draw_primitive(struct wined3d_device *device, const struct wined3d_state *s
if (!use_vs(state)) { - if (!stream_info->position_transformed && context->num_untracked_materials + if (!stream_info->position_transformed && context_gl->untracked_material_count && state->render_states[WINED3D_RS_LIGHTING]) { static BOOL warned; diff --git a/dlls/wined3d/state.c b/dlls/wined3d/state.c index b2fcbdd..c52e25d 100644 --- a/dlls/wined3d/state.c +++ b/dlls/wined3d/state.c @@ -1297,19 +1297,18 @@ void state_fogdensity(struct wined3d_context *context, const struct wined3d_stat
static void state_colormat(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id) { - const struct wined3d_gl_info *gl_info = context->gl_info; + struct wined3d_context_gl *context_gl = wined3d_context_gl(context); + const struct wined3d_gl_info *gl_info = context_gl->c.gl_info; GLenum Parm = 0;
- /* Depends on the decoded vertex declaration to read the existence of diffuse data. - * The vertex declaration will call this function if the fixed function pipeline is used. - */ - - if(isStateDirty(context, STATE_VDECL)) { + /* Depends on the decoded vertex declaration to read the existence of + * diffuse data. The vertex declaration will call this function if the + * fixed function pipeline is used. */ + if (isStateDirty(&context_gl->c, STATE_VDECL)) return; - }
- context->num_untracked_materials = 0; - if ((context->stream_info.use_map & (1u << WINED3D_FFP_DIFFUSE)) + context_gl->untracked_material_count = 0; + if ((context_gl->c.stream_info.use_map & (1u << WINED3D_FFP_DIFFUSE)) && state->render_states[WINED3D_RS_COLORVERTEX]) { TRACE("diff %d, amb %d, emis %d, spec %d\n", @@ -1325,38 +1324,23 @@ static void state_colormat(struct wined3d_context *context, const struct wined3d else Parm = GL_DIFFUSE; if (state->render_states[WINED3D_RS_EMISSIVEMATERIALSOURCE] == WINED3D_MCS_COLOR1) - { - context->untracked_materials[context->num_untracked_materials] = GL_EMISSION; - context->num_untracked_materials++; - } + context_gl->untracked_materials[context_gl->untracked_material_count++] = GL_EMISSION; if (state->render_states[WINED3D_RS_SPECULARMATERIALSOURCE] == WINED3D_MCS_COLOR1) - { - context->untracked_materials[context->num_untracked_materials] = GL_SPECULAR; - context->num_untracked_materials++; - } + context_gl->untracked_materials[context_gl->untracked_material_count++] = GL_SPECULAR; } else if (state->render_states[WINED3D_RS_AMBIENTMATERIALSOURCE] == WINED3D_MCS_COLOR1) { Parm = GL_AMBIENT; if (state->render_states[WINED3D_RS_EMISSIVEMATERIALSOURCE] == WINED3D_MCS_COLOR1) - { - context->untracked_materials[context->num_untracked_materials] = GL_EMISSION; - context->num_untracked_materials++; - } + context_gl->untracked_materials[context_gl->untracked_material_count++] = GL_EMISSION; if (state->render_states[WINED3D_RS_SPECULARMATERIALSOURCE] == WINED3D_MCS_COLOR1) - { - context->untracked_materials[context->num_untracked_materials] = GL_SPECULAR; - context->num_untracked_materials++; - } + context_gl->untracked_materials[context_gl->untracked_material_count++] = GL_SPECULAR; } else if (state->render_states[WINED3D_RS_EMISSIVEMATERIALSOURCE] == WINED3D_MCS_COLOR1) { Parm = GL_EMISSION; if (state->render_states[WINED3D_RS_SPECULARMATERIALSOURCE] == WINED3D_MCS_COLOR1) - { - context->untracked_materials[context->num_untracked_materials] = GL_SPECULAR; - context->num_untracked_materials++; - } + context_gl->untracked_materials[context_gl->untracked_material_count++] = GL_SPECULAR; } else if (state->render_states[WINED3D_RS_SPECULARMATERIALSOURCE] == WINED3D_MCS_COLOR1) { @@ -1365,7 +1349,8 @@ static void state_colormat(struct wined3d_context *context, const struct wined3d }
/* Nothing changed, return. */ - if (Parm == context->tracking_parm) return; + if (Parm == context_gl->tracking_parm) + return;
if (!Parm) { @@ -1382,7 +1367,7 @@ static void state_colormat(struct wined3d_context *context, const struct wined3d
/* Apparently calls to glMaterialfv are ignored for properties we're * tracking with glColorMaterial, so apply those here. */ - switch (context->tracking_parm) + switch (context_gl->tracking_parm) { case GL_AMBIENT_AND_DIFFUSE: gl_info->gl_ops.gl.p_glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT, (float *)&state->material.ambient); @@ -1421,7 +1406,7 @@ static void state_colormat(struct wined3d_context *context, const struct wined3d break; }
- context->tracking_parm = Parm; + context_gl->tracking_parm = Parm; }
static void state_linepattern(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id) diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h index 89d3272..6652794 100644 --- a/dlls/wined3d/wined3d_private.h +++ b/dlls/wined3d/wined3d_private.h @@ -1927,23 +1927,20 @@ struct wined3d_context DWORD lowest_disabled_stage : 4; /* Max WINED3D_MAX_TEXTURES, 8 */ DWORD use_immediate_mode_draw : 1; DWORD needs_set : 1; - DWORD num_untracked_materials : 2; /* Max value 2 */ + DWORD transform_feedback_active : 1; + DWORD transform_feedback_paused : 1;
DWORD update_shader_resource_bindings : 1; DWORD update_compute_shader_resource_bindings : 1; DWORD update_unordered_access_view_bindings : 1; DWORD update_compute_unordered_access_view_bindings : 1; DWORD uses_uavs : 1; - DWORD transform_feedback_active : 1; - DWORD transform_feedback_paused : 1; DWORD shader_update_mask : 6; /* WINED3D_SHADER_TYPE_COUNT, 6 */ DWORD clip_distance_mask : 8; /* WINED3D_MAX_CLIP_DISTANCES, 8 */ - DWORD padding : 11; + DWORD padding : 13;
DWORD constant_update_mask; DWORD numbered_array_mask; - GLenum tracking_parm; /* Which source is tracking current colour */ - GLenum untracked_materials[2]; enum fogsource fog_source;
UINT instance_count; @@ -1977,10 +1974,13 @@ struct wined3d_context_gl uint32_t fog_enabled : 1; uint32_t diffuse_attrib_to_1 : 1; uint32_t rebind_fbo : 1; - uint32_t padding : 27; + uint32_t untracked_material_count : 2; /* Max value 2 */ + uint32_t padding : 25;
uint32_t default_attrib_value_set;
+ GLenum tracking_parm; /* Which source is tracking current colour. */ + GLenum untracked_materials[2]; SIZE blit_size; unsigned int active_texture;