wined3d: Rename StateTable.

Signed-off-by: Józef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
Józef Kucia 2019-03-03 19:55:26 +01:00 committed by Alexandre Julliard
parent a2954a7121
commit 1d1511f66d
4 changed files with 34 additions and 31 deletions

View File

@ -1953,7 +1953,7 @@ struct wined3d_context *context_create(struct wined3d_swapchain *swapchain,
context->win_handle = swapchain->win_handle; context->win_handle = swapchain->win_handle;
context->gl_info = &device->adapter->gl_info; context->gl_info = &device->adapter->gl_info;
context->d3d_info = &device->adapter->d3d_info; context->d3d_info = &device->adapter->d3d_info;
context->state_table = device->StateTable; context->state_table = device->state_table;
/* Mark all states dirty to force a proper initialization of the states on /* Mark all states dirty to force a proper initialization of the states on
* the first use of the context. Compute states do not need initialization. */ * the first use of the context. Compute states do not need initialization. */

View File

@ -5357,7 +5357,7 @@ HRESULT device_init(struct wined3d_device *device, struct wined3d *wined3d,
wine_rb_init(&device->samplers, wined3d_sampler_compare); wine_rb_init(&device->samplers, wined3d_sampler_compare);
if (vertex_pipeline->vp_states && fragment_pipeline->states if (vertex_pipeline->vp_states && fragment_pipeline->states
&& FAILED(hr = compile_state_table(device->StateTable, device->multistate_funcs, && FAILED(hr = compile_state_table(device->state_table, device->multistate_funcs,
&adapter->d3d_info, adapter->gl_info.supported, vertex_pipeline, &adapter->d3d_info, adapter->gl_info.supported, vertex_pipeline,
fragment_pipeline, misc_state_template))) fragment_pipeline, misc_state_template)))
{ {
@ -5396,11 +5396,9 @@ err:
void device_invalidate_state(const struct wined3d_device *device, DWORD state) void device_invalidate_state(const struct wined3d_device *device, DWORD state)
{ {
DWORD rep = device->StateTable[state].representative; DWORD rep = device->state_table[state].representative;
struct wined3d_context *context; struct wined3d_context *context;
DWORD idx; unsigned int i, idx, shift;
BYTE shift;
UINT i;
wined3d_from_cs(device->cs); wined3d_from_cs(device->cs);
@ -5414,7 +5412,7 @@ void device_invalidate_state(const struct wined3d_device *device, DWORD state)
for (i = 0; i < device->context_count; ++i) for (i = 0; i < device->context_count; ++i)
{ {
context = device->contexts[i]; context = device->contexts[i];
if(isStateDirty(context, rep)) continue; if (isStateDirty(context, rep)) continue;
context->dirtyArray[context->numDirtyEntries++] = rep; context->dirtyArray[context->numDirtyEntries++] = rep;
idx = rep / (sizeof(*context->isStateDirty) * CHAR_BIT); idx = rep / (sizeof(*context->isStateDirty) * CHAR_BIT);

View File

@ -5519,39 +5519,43 @@ static void validate_state_table(struct StateEntry *state_table)
} }
} }
HRESULT compile_state_table(struct StateEntry *StateTable, APPLYSTATEFUNC **dev_multistate_funcs, HRESULT compile_state_table(struct StateEntry *state_table, APPLYSTATEFUNC **dev_multistate_funcs,
const struct wined3d_d3d_info *d3d_info, const BOOL *supported_extensions, const struct wined3d_d3d_info *d3d_info, const BOOL *supported_extensions,
const struct wined3d_vertex_pipe_ops *vertex, const struct fragment_pipeline *fragment, const struct wined3d_vertex_pipe_ops *vertex, const struct fragment_pipeline *fragment,
const struct StateEntryTemplate *misc) const struct StateEntryTemplate *misc)
{ {
unsigned int i, type, handlers;
APPLYSTATEFUNC multistate_funcs[STATE_HIGHEST + 1][3]; APPLYSTATEFUNC multistate_funcs[STATE_HIGHEST + 1][3];
const struct StateEntryTemplate *cur; const struct StateEntryTemplate *cur;
unsigned int i, type, handlers;
BOOL set[STATE_HIGHEST + 1]; BOOL set[STATE_HIGHEST + 1];
memset(multistate_funcs, 0, sizeof(multistate_funcs)); memset(multistate_funcs, 0, sizeof(multistate_funcs));
for(i = 0; i < STATE_HIGHEST + 1; i++) { for (i = 0; i < STATE_HIGHEST + 1; ++i)
StateTable[i].representative = 0; {
StateTable[i].apply = state_undefined; state_table[i].representative = 0;
state_table[i].apply = state_undefined;
} }
for(type = 0; type < 3; type++) { for (type = 0; type < 3; ++type)
{
/* This switch decides the order in which the states are applied */ /* This switch decides the order in which the states are applied */
switch(type) { switch (type)
{
case 0: cur = misc; break; case 0: cur = misc; break;
case 1: cur = fragment->states; break; case 1: cur = fragment->states; break;
case 2: cur = vertex->vp_states; break; case 2: cur = vertex->vp_states; break;
default: cur = NULL; /* Stupid compiler */ default: cur = NULL; /* Stupid compiler */
} }
if(!cur) continue; if (!cur) continue;
/* GL extension filtering should not prevent multiple handlers being applied from different /* GL extension filtering should not prevent multiple handlers being applied from different
* pipeline parts * pipeline parts
*/ */
memset(set, 0, sizeof(set)); memset(set, 0, sizeof(set));
for(i = 0; cur[i].state; i++) { for (i = 0; cur[i].state; ++i)
{
APPLYSTATEFUNC *funcs_array; APPLYSTATEFUNC *funcs_array;
/* Only use the first matching state with the available extension from one template. /* Only use the first matching state with the available extension from one template.
@ -5561,7 +5565,7 @@ HRESULT compile_state_table(struct StateEntry *StateTable, APPLYSTATEFUNC **dev_
* *
* if GL_XYZ_fancy is supported, ignore the 2nd line * if GL_XYZ_fancy is supported, ignore the 2nd line
*/ */
if(set[cur[i].state]) continue; if (set[cur[i].state]) continue;
/* Skip state lines depending on unsupported extensions */ /* Skip state lines depending on unsupported extensions */
if (!supported_extensions[cur[i].extension]) continue; if (!supported_extensions[cur[i].extension]) continue;
set[cur[i].state] = TRUE; set[cur[i].state] = TRUE;
@ -5576,12 +5580,13 @@ HRESULT compile_state_table(struct StateEntry *StateTable, APPLYSTATEFUNC **dev_
handlers = num_handlers(multistate_funcs[cur[i].state]); handlers = num_handlers(multistate_funcs[cur[i].state]);
multistate_funcs[cur[i].state][handlers] = cur[i].content.apply; multistate_funcs[cur[i].state][handlers] = cur[i].content.apply;
switch(handlers) { switch (handlers)
{
case 0: case 0:
StateTable[cur[i].state].apply = cur[i].content.apply; state_table[cur[i].state].apply = cur[i].content.apply;
break; break;
case 1: case 1:
StateTable[cur[i].state].apply = multistate_apply_2; state_table[cur[i].state].apply = multistate_apply_2;
if (!(dev_multistate_funcs[cur[i].state] = heap_calloc(2, sizeof(**dev_multistate_funcs)))) if (!(dev_multistate_funcs[cur[i].state] = heap_calloc(2, sizeof(**dev_multistate_funcs))))
goto out_of_mem; goto out_of_mem;
@ -5589,7 +5594,7 @@ HRESULT compile_state_table(struct StateEntry *StateTable, APPLYSTATEFUNC **dev_
dev_multistate_funcs[cur[i].state][1] = multistate_funcs[cur[i].state][1]; dev_multistate_funcs[cur[i].state][1] = multistate_funcs[cur[i].state][1];
break; break;
case 2: case 2:
StateTable[cur[i].state].apply = multistate_apply_3; state_table[cur[i].state].apply = multistate_apply_3;
if (!(funcs_array = heap_realloc(dev_multistate_funcs[cur[i].state], if (!(funcs_array = heap_realloc(dev_multistate_funcs[cur[i].state],
sizeof(**dev_multistate_funcs) * 3))) sizeof(**dev_multistate_funcs) * 3)))
goto out_of_mem; goto out_of_mem;
@ -5598,22 +5603,22 @@ HRESULT compile_state_table(struct StateEntry *StateTable, APPLYSTATEFUNC **dev_
dev_multistate_funcs[cur[i].state][2] = multistate_funcs[cur[i].state][2]; dev_multistate_funcs[cur[i].state][2] = multistate_funcs[cur[i].state][2];
break; break;
default: default:
ERR("Unexpected amount of state handlers for state %u: %u\n", ERR("Unexpected amount of state handlers for state %u: %u.\n",
cur[i].state, handlers + 1); cur[i].state, handlers + 1);
} }
if (StateTable[cur[i].state].representative if (state_table[cur[i].state].representative
&& StateTable[cur[i].state].representative != cur[i].content.representative) && state_table[cur[i].state].representative != cur[i].content.representative)
{ {
FIXME("State %s (%#x) has different representatives in different pipeline parts.\n", FIXME("State %s (%#x) has different representatives in different pipeline parts.\n",
debug_d3dstate(cur[i].state), cur[i].state); debug_d3dstate(cur[i].state), cur[i].state);
} }
StateTable[cur[i].state].representative = cur[i].content.representative; state_table[cur[i].state].representative = cur[i].content.representative;
} }
} }
prune_invalid_states(StateTable, d3d_info); prune_invalid_states(state_table, d3d_info);
validate_state_table(StateTable); validate_state_table(state_table);
return WINED3D_OK; return WINED3D_OK;
@ -5623,7 +5628,7 @@ out_of_mem:
heap_free(dev_multistate_funcs[i]); heap_free(dev_multistate_funcs[i]);
} }
memset(dev_multistate_funcs, 0, (STATE_HIGHEST + 1)*sizeof(*dev_multistate_funcs)); memset(dev_multistate_funcs, 0, (STATE_HIGHEST + 1) * sizeof(*dev_multistate_funcs));
return E_OUTOFMEMORY; return E_OUTOFMEMORY;
} }

View File

@ -2107,7 +2107,7 @@ extern const struct wined3d_vertex_pipe_ops ffp_vertex_pipe DECLSPEC_HIDDEN;
extern const struct wined3d_vertex_pipe_ops glsl_vertex_pipe DECLSPEC_HIDDEN; extern const struct wined3d_vertex_pipe_ops glsl_vertex_pipe DECLSPEC_HIDDEN;
/* "Base" state table */ /* "Base" state table */
HRESULT compile_state_table(struct StateEntry *StateTable, APPLYSTATEFUNC **dev_multistate_funcs, HRESULT compile_state_table(struct StateEntry *state_table, APPLYSTATEFUNC **dev_multistate_funcs,
const struct wined3d_d3d_info *d3d_info, const BOOL *supported_extensions, const struct wined3d_d3d_info *d3d_info, const BOOL *supported_extensions,
const struct wined3d_vertex_pipe_ops *vertex, const struct fragment_pipeline *fragment, const struct wined3d_vertex_pipe_ops *vertex, const struct fragment_pipeline *fragment,
const struct StateEntryTemplate *misc) DECLSPEC_HIDDEN; const struct StateEntryTemplate *misc) DECLSPEC_HIDDEN;
@ -3038,7 +3038,7 @@ struct wined3d_device
void *shader_priv; void *shader_priv;
void *fragment_priv; void *fragment_priv;
void *vertex_priv; void *vertex_priv;
struct StateEntry StateTable[STATE_HIGHEST + 1]; struct StateEntry state_table[STATE_HIGHEST + 1];
/* Array of functions for states which are handled by more than one pipeline part */ /* Array of functions for states which are handled by more than one pipeline part */
APPLYSTATEFUNC *multistate_funcs[STATE_HIGHEST + 1]; APPLYSTATEFUNC *multistate_funcs[STATE_HIGHEST + 1];
struct wined3d_blitter *blitter; struct wined3d_blitter *blitter;