Commit 25b90769 authored by Henri Verbeet's avatar Henri Verbeet Committed by Alexandre Julliard

wined3d: Only allow 224 pixel shader vec4's.

parent aa5ccba8
...@@ -304,7 +304,7 @@ struct shader_arb_priv ...@@ -304,7 +304,7 @@ struct shader_arb_priv
unsigned int highest_dirty_ps_const, highest_dirty_vs_const; unsigned int highest_dirty_ps_const, highest_dirty_vs_const;
char vshader_const_dirty[WINED3D_MAX_VS_CONSTS_F]; char vshader_const_dirty[WINED3D_MAX_VS_CONSTS_F];
char *pshader_const_dirty; char pshader_const_dirty[WINED3D_MAX_PS_CONSTS_F];
const struct wined3d_context *last_context; const struct wined3d_context *last_context;
const struct wined3d_vertex_pipe_ops *vertex_pipe; const struct wined3d_vertex_pipe_ops *vertex_pipe;
...@@ -5001,18 +5001,16 @@ static HRESULT shader_arb_alloc(struct wined3d_device *device, const struct wine ...@@ -5001,18 +5001,16 @@ static HRESULT shader_arb_alloc(struct wined3d_device *device, const struct wine
memset(priv->vshader_const_dirty, 1, memset(priv->vshader_const_dirty, 1,
sizeof(*priv->vshader_const_dirty) * d3d_info->limits.vs_uniform_count); sizeof(*priv->vshader_const_dirty) * d3d_info->limits.vs_uniform_count);
priv->pshader_const_dirty = HeapAlloc(GetProcessHeap(), 0,
sizeof(*priv->pshader_const_dirty) * d3d_info->limits.ps_uniform_count);
if (!priv->pshader_const_dirty)
goto fail;
memset(priv->pshader_const_dirty, 1, memset(priv->pshader_const_dirty, 1,
sizeof(*priv->pshader_const_dirty) * d3d_info->limits.ps_uniform_count); sizeof(*priv->pshader_const_dirty) * d3d_info->limits.ps_uniform_count);
if(wine_rb_init(&priv->signature_tree, &sig_tree_functions) == -1) if (wine_rb_init(&priv->signature_tree, &sig_tree_functions) == -1)
{ {
ERR("RB tree init failed\n"); ERR("RB tree init failed\n");
goto fail; fragment_pipe->free_private(device);
vertex_pipe->vp_free(device);
HeapFree(GetProcessHeap(), 0, priv);
return E_OUTOFMEMORY;
} }
priv->vertex_pipe = vertex_pipe; priv->vertex_pipe = vertex_pipe;
...@@ -5025,13 +5023,6 @@ static HRESULT shader_arb_alloc(struct wined3d_device *device, const struct wine ...@@ -5025,13 +5023,6 @@ static HRESULT shader_arb_alloc(struct wined3d_device *device, const struct wine
device->shader_priv = priv; device->shader_priv = priv;
return WINED3D_OK; return WINED3D_OK;
fail:
HeapFree(GetProcessHeap(), 0, priv->pshader_const_dirty);
fragment_pipe->free_private(device);
vertex_pipe->vp_free(device);
HeapFree(GetProcessHeap(), 0, priv);
return E_OUTOFMEMORY;
} }
static void release_signature(struct wine_rb_entry *entry, void *context) static void release_signature(struct wine_rb_entry *entry, void *context)
...@@ -5070,7 +5061,6 @@ static void shader_arb_free(struct wined3d_device *device) ...@@ -5070,7 +5061,6 @@ static void shader_arb_free(struct wined3d_device *device)
} }
wine_rb_destroy(&priv->signature_tree, release_signature, NULL); wine_rb_destroy(&priv->signature_tree, release_signature, NULL);
HeapFree(GetProcessHeap(), 0, priv->pshader_const_dirty);
priv->fragment_pipe->free_private(device); priv->fragment_pipe->free_private(device);
priv->vertex_pipe->vp_free(device); priv->vertex_pipe->vp_free(device);
HeapFree(GetProcessHeap(), 0, device->shader_priv); HeapFree(GetProcessHeap(), 0, device->shader_priv);
...@@ -5169,7 +5159,7 @@ static void shader_arb_get_caps(const struct wined3d_gl_info *gl_info, struct sh ...@@ -5169,7 +5159,7 @@ static void shader_arb_get_caps(const struct wined3d_gl_info *gl_info, struct sh
TRACE("Hardware pixel shader version 1.4 enabled (ARB_PROGRAM)\n"); TRACE("Hardware pixel shader version 1.4 enabled (ARB_PROGRAM)\n");
} }
caps->ps_version = min(wined3d_settings.max_sm_ps, ps_version); caps->ps_version = min(wined3d_settings.max_sm_ps, ps_version);
caps->ps_uniform_count = ps_consts; caps->ps_uniform_count = min(WINED3D_MAX_PS_CONSTS_F, ps_consts);
caps->ps_1x_max_value = 8.0f; caps->ps_1x_max_value = 8.0f;
} }
else else
......
...@@ -999,13 +999,11 @@ void wined3d_cs_emit_set_material(struct wined3d_cs *cs, const struct wined3d_ma ...@@ -999,13 +999,11 @@ void wined3d_cs_emit_set_material(struct wined3d_cs *cs, const struct wined3d_ma
static void wined3d_cs_exec_reset_state(struct wined3d_cs *cs, const void *data) static void wined3d_cs_exec_reset_state(struct wined3d_cs *cs, const void *data)
{ {
struct wined3d_adapter *adapter = cs->device->adapter; struct wined3d_adapter *adapter = cs->device->adapter;
HRESULT hr;
state_cleanup(&cs->state); state_cleanup(&cs->state);
memset(&cs->state, 0, sizeof(cs->state)); memset(&cs->state, 0, sizeof(cs->state));
if (FAILED(hr = state_init(&cs->state, &cs->fb, &adapter->gl_info, &adapter->d3d_info, state_init(&cs->state, &cs->fb, &adapter->gl_info, &adapter->d3d_info,
WINED3D_STATE_NO_REF | WINED3D_STATE_INIT_DEFAULT))) WINED3D_STATE_NO_REF | WINED3D_STATE_INIT_DEFAULT);
ERR("Failed to initialize CS state, hr %#x.\n", hr);
} }
void wined3d_cs_emit_reset_state(struct wined3d_cs *cs) void wined3d_cs_emit_reset_state(struct wined3d_cs *cs)
...@@ -1093,13 +1091,8 @@ struct wined3d_cs *wined3d_cs_create(struct wined3d_device *device) ...@@ -1093,13 +1091,8 @@ struct wined3d_cs *wined3d_cs_create(struct wined3d_device *device)
return NULL; return NULL;
} }
if (FAILED(state_init(&cs->state, &cs->fb, gl_info, &device->adapter->d3d_info, state_init(&cs->state, &cs->fb, gl_info, &device->adapter->d3d_info,
WINED3D_STATE_NO_REF | WINED3D_STATE_INIT_DEFAULT))) WINED3D_STATE_NO_REF | WINED3D_STATE_INIT_DEFAULT);
{
HeapFree(GetProcessHeap(), 0, cs->fb.render_targets);
HeapFree(GetProcessHeap(), 0, cs);
return NULL;
}
cs->ops = &wined3d_cs_st_ops; cs->ops = &wined3d_cs_st_ops;
cs->device = device; cs->device = device;
......
...@@ -2713,8 +2713,8 @@ HRESULT CDECL wined3d_device_set_ps_consts_f(struct wined3d_device *device, ...@@ -2713,8 +2713,8 @@ HRESULT CDECL wined3d_device_set_ps_consts_f(struct wined3d_device *device,
} }
if (device->recording) if (device->recording)
memset(&device->recording->changed.pixelShaderConstantsF[start_idx], 1, memset(&device->recording->changed.ps_consts_f[start_idx], 1,
count * sizeof(*device->recording->changed.pixelShaderConstantsF)); count * sizeof(*device->recording->changed.ps_consts_f));
else else
device->shader_backend->shader_update_float_pixel_constants(device, start_idx, count); device->shader_backend->shader_update_float_pixel_constants(device, start_idx, count);
...@@ -4887,9 +4887,8 @@ HRESULT CDECL wined3d_device_reset(struct wined3d_device *device, ...@@ -4887,9 +4887,8 @@ HRESULT CDECL wined3d_device_reset(struct wined3d_device *device,
if (device->d3d_initialized) if (device->d3d_initialized)
delete_opengl_contexts(device, swapchain); delete_opengl_contexts(device, swapchain);
if (FAILED(hr = state_init(&device->state, &device->fb, &device->adapter->gl_info, state_init(&device->state, &device->fb, &device->adapter->gl_info,
&device->adapter->d3d_info, WINED3D_STATE_INIT_DEFAULT))) &device->adapter->d3d_info, WINED3D_STATE_INIT_DEFAULT);
ERR("Failed to initialize device state, hr %#x.\n", hr);
device->update_state = &device->state; device->update_state = &device->state;
device_init_swapchain_state(device, swapchain); device_init_swapchain_state(device, swapchain);
...@@ -5143,12 +5142,8 @@ HRESULT device_init(struct wined3d_device *device, struct wined3d *wined3d, ...@@ -5143,12 +5142,8 @@ HRESULT device_init(struct wined3d_device *device, struct wined3d *wined3d,
device->blitter = adapter->blitter; device->blitter = adapter->blitter;
if (FAILED(hr = state_init(&device->state, &device->fb, &adapter->gl_info, state_init(&device->state, &device->fb, &adapter->gl_info,
&adapter->d3d_info, WINED3D_STATE_INIT_DEFAULT))) &adapter->d3d_info, WINED3D_STATE_INIT_DEFAULT);
{
ERR("Failed to initialize device state, hr %#x.\n", hr);
goto err;
}
device->update_state = &device->state; device->update_state = &device->state;
if (!(device->cs = wined3d_cs_create(device))) if (!(device->cs = wined3d_cs_create(device)))
......
...@@ -165,7 +165,7 @@ struct glsl_ps_program ...@@ -165,7 +165,7 @@ struct glsl_ps_program
{ {
struct list shader_entry; struct list shader_entry;
GLuint id; GLuint id;
GLint *uniform_f_locations; GLint uniform_f_locations[WINED3D_MAX_PS_CONSTS_F];
GLint uniform_i_locations[MAX_CONST_I]; GLint uniform_i_locations[MAX_CONST_I];
GLint uniform_b_locations[MAX_CONST_B]; GLint uniform_b_locations[MAX_CONST_B];
GLint bumpenv_mat_location[MAX_TEXTURES]; GLint bumpenv_mat_location[MAX_TEXTURES];
...@@ -5137,7 +5137,6 @@ static void delete_glsl_program_entry(struct shader_glsl_priv *priv, const struc ...@@ -5137,7 +5137,6 @@ static void delete_glsl_program_entry(struct shader_glsl_priv *priv, const struc
list_remove(&entry->gs.shader_entry); list_remove(&entry->gs.shader_entry);
if (entry->ps.id) if (entry->ps.id)
list_remove(&entry->ps.shader_entry); list_remove(&entry->ps.shader_entry);
HeapFree(GetProcessHeap(), 0, entry->ps.uniform_f_locations);
HeapFree(GetProcessHeap(), 0, entry); HeapFree(GetProcessHeap(), 0, entry);
} }
...@@ -7096,15 +7095,12 @@ static void shader_glsl_init_ps_uniform_locations(const struct wined3d_gl_info * ...@@ -7096,15 +7095,12 @@ static void shader_glsl_init_ps_uniform_locations(const struct wined3d_gl_info *
unsigned int i; unsigned int i;
struct wined3d_string_buffer *name = string_buffer_get(&priv->string_buffers); struct wined3d_string_buffer *name = string_buffer_get(&priv->string_buffers);
ps->uniform_f_locations = HeapAlloc(GetProcessHeap(), 0,
sizeof(GLuint) * gl_info->limits.glsl_ps_float_constants);
for (i = 0; i < ps_c_count; ++i) for (i = 0; i < ps_c_count; ++i)
{ {
string_buffer_sprintf(name, "ps_c[%u]", i); string_buffer_sprintf(name, "ps_c[%u]", i);
ps->uniform_f_locations[i] = GL_EXTCALL(glGetUniformLocation(program_id, name->buffer)); ps->uniform_f_locations[i] = GL_EXTCALL(glGetUniformLocation(program_id, name->buffer));
} }
memset(&ps->uniform_f_locations[ps_c_count], 0xff, memset(&ps->uniform_f_locations[ps_c_count], 0xff, (WINED3D_MAX_PS_CONSTS_F - ps_c_count) * sizeof(GLuint));
(gl_info->limits.glsl_ps_float_constants - ps_c_count) * sizeof(GLuint));
for (i = 0; i < MAX_CONST_I; ++i) for (i = 0; i < MAX_CONST_I; ++i)
{ {
...@@ -7371,7 +7367,7 @@ static void set_glsl_shader_program(const struct wined3d_context *context, const ...@@ -7371,7 +7367,7 @@ static void set_glsl_shader_program(const struct wined3d_context *context, const
shader_glsl_init_vs_uniform_locations(gl_info, priv, program_id, &entry->vs, shader_glsl_init_vs_uniform_locations(gl_info, priv, program_id, &entry->vs,
vshader ? vshader->limits->constant_float : 0); vshader ? vshader->limits->constant_float : 0);
shader_glsl_init_ps_uniform_locations(gl_info, priv, program_id, &entry->ps, shader_glsl_init_ps_uniform_locations(gl_info, priv, program_id, &entry->ps,
pshader ? min(pshader->limits->constant_float, gl_info->limits.glsl_ps_float_constants) : 0); pshader ? pshader->limits->constant_float : 0);
checkGLcall("Find glsl program uniform locations"); checkGLcall("Find glsl program uniform locations");
if (gl_info->supported[WINED3D_GL_LEGACY_CONTEXT]) if (gl_info->supported[WINED3D_GL_LEGACY_CONTEXT])
...@@ -7930,7 +7926,7 @@ static HRESULT shader_glsl_alloc(struct wined3d_device *device, const struct win ...@@ -7930,7 +7926,7 @@ static HRESULT shader_glsl_alloc(struct wined3d_device *device, const struct win
{ {
const struct wined3d_gl_info *gl_info = &device->adapter->gl_info; const struct wined3d_gl_info *gl_info = &device->adapter->gl_info;
struct shader_glsl_priv *priv = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(struct shader_glsl_priv)); struct shader_glsl_priv *priv = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(struct shader_glsl_priv));
SIZE_T stack_size = wined3d_log2i(max(WINED3D_MAX_VS_CONSTS_F, gl_info->limits.glsl_ps_float_constants)) + 1; SIZE_T stack_size = wined3d_log2i(max(WINED3D_MAX_VS_CONSTS_F, WINED3D_MAX_PS_CONSTS_F)) + 1;
struct fragment_caps fragment_caps; struct fragment_caps fragment_caps;
void *vertex_priv, *fragment_priv; void *vertex_priv, *fragment_priv;
...@@ -7970,7 +7966,7 @@ static HRESULT shader_glsl_alloc(struct wined3d_device *device, const struct win ...@@ -7970,7 +7966,7 @@ static HRESULT shader_glsl_alloc(struct wined3d_device *device, const struct win
goto fail; goto fail;
} }
if (!constant_heap_init(&priv->pconst_heap, gl_info->limits.glsl_ps_float_constants)) if (!constant_heap_init(&priv->pconst_heap, WINED3D_MAX_PS_CONSTS_F))
{ {
ERR("Failed to initialize pixel shader constant heap\n"); ERR("Failed to initialize pixel shader constant heap\n");
goto fail; goto fail;
...@@ -8086,7 +8082,7 @@ static void shader_glsl_get_caps(const struct wined3d_gl_info *gl_info, struct s ...@@ -8086,7 +8082,7 @@ static void shader_glsl_get_caps(const struct wined3d_gl_info *gl_info, struct s
caps->ps_version = min(wined3d_settings.max_sm_ps, shader_model); caps->ps_version = min(wined3d_settings.max_sm_ps, shader_model);
caps->vs_uniform_count = min(WINED3D_MAX_VS_CONSTS_F, gl_info->limits.glsl_vs_float_constants); caps->vs_uniform_count = min(WINED3D_MAX_VS_CONSTS_F, gl_info->limits.glsl_vs_float_constants);
caps->ps_uniform_count = gl_info->limits.glsl_ps_float_constants; caps->ps_uniform_count = min(WINED3D_MAX_PS_CONSTS_F, gl_info->limits.glsl_ps_float_constants);
caps->varying_count = gl_info->limits.glsl_varyings; caps->varying_count = gl_info->limits.glsl_varyings;
/* FIXME: The following line is card dependent. -8.0 to 8.0 is the /* FIXME: The following line is card dependent. -8.0 to 8.0 is the
......
...@@ -189,30 +189,6 @@ static const DWORD vertex_states_sampler[] = ...@@ -189,30 +189,6 @@ static const DWORD vertex_states_sampler[] =
WINED3D_SAMP_DMAP_OFFSET, WINED3D_SAMP_DMAP_OFFSET,
}; };
/* Allocates the correct amount of space for pixel and vertex shader constants,
* along with their set/changed flags on the given stateblock object
*/
static HRESULT stateblock_allocate_shader_constants(struct wined3d_stateblock *object)
{
const struct wined3d_d3d_info *d3d_info = &object->device->adapter->d3d_info;
object->changed.pixelShaderConstantsF = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY,
sizeof(BOOL) * d3d_info->limits.ps_uniform_count);
if (!object->changed.pixelShaderConstantsF) goto fail;
object->contained_ps_consts_f = HeapAlloc(GetProcessHeap(), 0,
sizeof(DWORD) * d3d_info->limits.ps_uniform_count);
if (!object->contained_ps_consts_f) goto fail;
return WINED3D_OK;
fail:
ERR("Failed to allocate memory\n");
HeapFree(GetProcessHeap(), 0, object->changed.pixelShaderConstantsF);
HeapFree(GetProcessHeap(), 0, object->contained_ps_consts_f);
return E_OUTOFMEMORY;
}
static inline void stateblock_set_bits(DWORD *map, UINT map_size) static inline void stateblock_set_bits(DWORD *map, UINT map_size)
{ {
DWORD mask = (1u << (map_size & 0x1f)) - 1; DWORD mask = (1u << (map_size & 0x1f)) - 1;
...@@ -250,7 +226,7 @@ static void stateblock_savedstates_set_all(struct wined3d_saved_states *states, ...@@ -250,7 +226,7 @@ static void stateblock_savedstates_set_all(struct wined3d_saved_states *states,
states->vertexShaderConstantsI = 0xffff; states->vertexShaderConstantsI = 0xffff;
/* Dynamically sized arrays */ /* Dynamically sized arrays */
memset(states->pixelShaderConstantsF, TRUE, sizeof(BOOL) * ps_consts); memset(states->ps_consts_f, TRUE, sizeof(BOOL) * ps_consts);
memset(states->vs_consts_f, TRUE, sizeof(BOOL) * vs_consts); memset(states->vs_consts_f, TRUE, sizeof(BOOL) * vs_consts);
} }
...@@ -277,7 +253,7 @@ static void stateblock_savedstates_set_pixel(struct wined3d_saved_states *states ...@@ -277,7 +253,7 @@ static void stateblock_savedstates_set_pixel(struct wined3d_saved_states *states
states->pixelShaderConstantsB = 0xffff; states->pixelShaderConstantsB = 0xffff;
states->pixelShaderConstantsI = 0xffff; states->pixelShaderConstantsI = 0xffff;
memset(states->pixelShaderConstantsF, TRUE, sizeof(BOOL) * num_constants); memset(states->ps_consts_f, TRUE, sizeof(BOOL) * num_constants);
} }
static void stateblock_savedstates_set_vertex(struct wined3d_saved_states *states, const DWORD num_constants) static void stateblock_savedstates_set_vertex(struct wined3d_saved_states *states, const DWORD num_constants)
...@@ -365,7 +341,7 @@ void stateblock_init_contained_states(struct wined3d_stateblock *stateblock) ...@@ -365,7 +341,7 @@ void stateblock_init_contained_states(struct wined3d_stateblock *stateblock)
for (i = 0; i < d3d_info->limits.ps_uniform_count; ++i) for (i = 0; i < d3d_info->limits.ps_uniform_count; ++i)
{ {
if (stateblock->changed.pixelShaderConstantsF[i]) if (stateblock->changed.ps_consts_f[i])
{ {
stateblock->contained_ps_consts_f[stateblock->num_contained_ps_consts_f] = i; stateblock->contained_ps_consts_f[stateblock->num_contained_ps_consts_f] = i;
++stateblock->num_contained_ps_consts_f; ++stateblock->num_contained_ps_consts_f;
...@@ -554,8 +530,6 @@ void state_cleanup(struct wined3d_state *state) ...@@ -554,8 +530,6 @@ void state_cleanup(struct wined3d_state *state)
HeapFree(GetProcessHeap(), 0, light); HeapFree(GetProcessHeap(), 0, light);
} }
} }
HeapFree(GetProcessHeap(), 0, state->ps_consts_f);
} }
ULONG CDECL wined3d_stateblock_decref(struct wined3d_stateblock *stateblock) ULONG CDECL wined3d_stateblock_decref(struct wined3d_stateblock *stateblock)
...@@ -567,9 +541,6 @@ ULONG CDECL wined3d_stateblock_decref(struct wined3d_stateblock *stateblock) ...@@ -567,9 +541,6 @@ ULONG CDECL wined3d_stateblock_decref(struct wined3d_stateblock *stateblock)
if (!refcount) if (!refcount)
{ {
state_cleanup(&stateblock->state); state_cleanup(&stateblock->state);
HeapFree(GetProcessHeap(), 0, stateblock->changed.pixelShaderConstantsF);
HeapFree(GetProcessHeap(), 0, stateblock->contained_ps_consts_f);
HeapFree(GetProcessHeap(), 0, stateblock); HeapFree(GetProcessHeap(), 0, stateblock);
} }
...@@ -1283,7 +1254,7 @@ static void state_init_default(struct wined3d_state *state, const struct wined3d ...@@ -1283,7 +1254,7 @@ static void state_init_default(struct wined3d_state *state, const struct wined3d
} }
} }
HRESULT state_init(struct wined3d_state *state, struct wined3d_fb_state *fb, void state_init(struct wined3d_state *state, struct wined3d_fb_state *fb,
const struct wined3d_gl_info *gl_info, const struct wined3d_d3d_info *d3d_info, const struct wined3d_gl_info *gl_info, const struct wined3d_d3d_info *d3d_info,
DWORD flags) DWORD flags)
{ {
...@@ -1297,33 +1268,18 @@ HRESULT state_init(struct wined3d_state *state, struct wined3d_fb_state *fb, ...@@ -1297,33 +1268,18 @@ HRESULT state_init(struct wined3d_state *state, struct wined3d_fb_state *fb,
list_init(&state->light_map[i]); list_init(&state->light_map[i]);
} }
if (!(state->ps_consts_f = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY,
sizeof(*state->ps_consts_f) * d3d_info->limits.ps_uniform_count)))
return E_OUTOFMEMORY;
if (flags & WINED3D_STATE_INIT_DEFAULT) if (flags & WINED3D_STATE_INIT_DEFAULT)
state_init_default(state, gl_info); state_init_default(state, gl_info);
return WINED3D_OK;
} }
static HRESULT stateblock_init(struct wined3d_stateblock *stateblock, static HRESULT stateblock_init(struct wined3d_stateblock *stateblock,
struct wined3d_device *device, enum wined3d_stateblock_type type) struct wined3d_device *device, enum wined3d_stateblock_type type)
{ {
HRESULT hr;
const struct wined3d_d3d_info *d3d_info = &device->adapter->d3d_info; const struct wined3d_d3d_info *d3d_info = &device->adapter->d3d_info;
stateblock->ref = 1; stateblock->ref = 1;
stateblock->device = device; stateblock->device = device;
state_init(&stateblock->state, NULL, &device->adapter->gl_info, d3d_info, 0);
if (FAILED(hr = state_init(&stateblock->state, NULL, &device->adapter->gl_info, d3d_info, 0)))
return hr;
if (FAILED(hr = stateblock_allocate_shader_constants(stateblock)))
{
state_cleanup(&stateblock->state);
return hr;
}
if (type == WINED3D_SBT_RECORDED) if (type == WINED3D_SBT_RECORDED)
return WINED3D_OK; return WINED3D_OK;
......
...@@ -514,6 +514,7 @@ enum wined3d_shader_rel_op ...@@ -514,6 +514,7 @@ enum wined3d_shader_rel_op
#define MAX_CONST_B 16 #define MAX_CONST_B 16
#define WINED3D_MAX_CBS 15 #define WINED3D_MAX_CBS 15
#define WINED3D_MAX_VS_CONSTS_F 256 #define WINED3D_MAX_VS_CONSTS_F 256
#define WINED3D_MAX_PS_CONSTS_F 224
/* FIXME: This needs to go up to 2048 for /* FIXME: This needs to go up to 2048 for
* Shader model 3 according to msdn (and for software shaders) */ * Shader model 3 according to msdn (and for software shaders) */
...@@ -2217,7 +2218,7 @@ struct wined3d_state ...@@ -2217,7 +2218,7 @@ struct wined3d_state
BOOL ps_consts_b[MAX_CONST_B]; BOOL ps_consts_b[MAX_CONST_B];
INT ps_consts_i[MAX_CONST_I * 4]; INT ps_consts_i[MAX_CONST_I * 4];
struct wined3d_vec4 *ps_consts_f; struct wined3d_vec4 ps_consts_f[WINED3D_MAX_PS_CONSTS_F];
struct wined3d_texture *textures[MAX_COMBINED_SAMPLERS]; struct wined3d_texture *textures[MAX_COMBINED_SAMPLERS];
DWORD sampler_states[MAX_COMBINED_SAMPLERS][WINED3D_HIGHEST_SAMPLER_STATE + 1]; DWORD sampler_states[MAX_COMBINED_SAMPLERS][WINED3D_HIGHEST_SAMPLER_STATE + 1];
...@@ -2777,7 +2778,7 @@ struct wined3d_saved_states ...@@ -2777,7 +2778,7 @@ struct wined3d_saved_states
DWORD clipplane; /* WINED3DMAXUSERCLIPPLANES, 32 */ DWORD clipplane; /* WINED3DMAXUSERCLIPPLANES, 32 */
WORD pixelShaderConstantsB; /* MAX_CONST_B, 16 */ WORD pixelShaderConstantsB; /* MAX_CONST_B, 16 */
WORD pixelShaderConstantsI; /* MAX_CONST_I, 16 */ WORD pixelShaderConstantsI; /* MAX_CONST_I, 16 */
BOOL *pixelShaderConstantsF; BOOL ps_consts_f[WINED3D_MAX_PS_CONSTS_F];
WORD vertexShaderConstantsB; /* MAX_CONST_B, 16 */ WORD vertexShaderConstantsB; /* MAX_CONST_B, 16 */
WORD vertexShaderConstantsI; /* MAX_CONST_I, 16 */ WORD vertexShaderConstantsI; /* MAX_CONST_I, 16 */
BOOL vs_consts_f[WINED3D_MAX_VS_CONSTS_F]; BOOL vs_consts_f[WINED3D_MAX_VS_CONSTS_F];
...@@ -2822,7 +2823,7 @@ struct wined3d_stateblock ...@@ -2822,7 +2823,7 @@ struct wined3d_stateblock
unsigned int num_contained_ps_consts_i; unsigned int num_contained_ps_consts_i;
DWORD contained_ps_consts_b[MAX_CONST_B]; DWORD contained_ps_consts_b[MAX_CONST_B];
unsigned int num_contained_ps_consts_b; unsigned int num_contained_ps_consts_b;
DWORD *contained_ps_consts_f; DWORD contained_ps_consts_f[WINED3D_MAX_PS_CONSTS_F];
unsigned int num_contained_ps_consts_f; unsigned int num_contained_ps_consts_f;
struct StageState contained_tss_states[MAX_TEXTURES * (WINED3D_HIGHEST_TEXTURE_STATE + 1)]; struct StageState contained_tss_states[MAX_TEXTURES * (WINED3D_HIGHEST_TEXTURE_STATE + 1)];
unsigned int num_contained_tss_states; unsigned int num_contained_tss_states;
...@@ -2833,7 +2834,7 @@ struct wined3d_stateblock ...@@ -2833,7 +2834,7 @@ struct wined3d_stateblock
void stateblock_init_contained_states(struct wined3d_stateblock *stateblock) DECLSPEC_HIDDEN; void stateblock_init_contained_states(struct wined3d_stateblock *stateblock) DECLSPEC_HIDDEN;
void state_cleanup(struct wined3d_state *state) DECLSPEC_HIDDEN; void state_cleanup(struct wined3d_state *state) DECLSPEC_HIDDEN;
HRESULT state_init(struct wined3d_state *state, struct wined3d_fb_state *fb, void state_init(struct wined3d_state *state, struct wined3d_fb_state *fb,
const struct wined3d_gl_info *gl_info, const struct wined3d_d3d_info *d3d_info, const struct wined3d_gl_info *gl_info, const struct wined3d_d3d_info *d3d_info,
DWORD flags) DECLSPEC_HIDDEN; DWORD flags) DECLSPEC_HIDDEN;
void state_unbind_resources(struct wined3d_state *state) DECLSPEC_HIDDEN; void state_unbind_resources(struct wined3d_state *state) DECLSPEC_HIDDEN;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment