[PATCH 5/5] wined3d: Pass a state pointer instead of a stateblock to loadVertexData().
Henri Verbeet
hverbeet at codeweavers.com
Tue Jul 12 14:17:48 CDT 2011
---
dlls/wined3d/state.c | 74 +++++++++++++++++++++++++-------------------------
1 files changed, 37 insertions(+), 37 deletions(-)
diff --git a/dlls/wined3d/state.c b/dlls/wined3d/state.c
index 682c895..fd4149e 100644
--- a/dlls/wined3d/state.c
+++ b/dlls/wined3d/state.c
@@ -4020,10 +4020,9 @@ static void transform_projection(DWORD state, struct wined3d_stateblock *statebl
}
}
-/* This should match any arrays loaded in loadVertexData.
- * TODO: Only load / unload arrays if we have to.
- */
-static inline void unloadVertexData(const struct wined3d_gl_info *gl_info)
+/* This should match any arrays loaded in load_vertex_data.
+ * TODO: Only load / unload arrays if we have to. */
+static void unload_vertex_data(const struct wined3d_gl_info *gl_info)
{
glDisableClientState(GL_VERTEX_ARRAY);
glDisableClientState(GL_NORMAL_ARRAY);
@@ -4230,10 +4229,10 @@ static void load_numbered_arrays(struct wined3d_context *context,
checkGLcall("Loading numbered arrays");
}
-/* Used from 2 different functions, and too big to justify making it inlined */
-static void loadVertexData(const struct wined3d_context *context, struct wined3d_stateblock *stateblock,
- const struct wined3d_stream_info *si)
+static void load_vertex_data(const struct wined3d_context *context,
+ const struct wined3d_stream_info *si, const struct wined3d_state *state)
{
+ struct wined3d_device *device = context->swapchain->device;
const struct wined3d_gl_info *gl_info = context->gl_info;
GLuint curVBO = gl_info->supported[ARB_VERTEX_BUFFER_OBJECT] ? ~0U : 0;
const struct wined3d_stream_info_element *e;
@@ -4242,19 +4241,19 @@ static void loadVertexData(const struct wined3d_context *context, struct wined3d
TRACE("Using fast vertex array code\n");
/* This is fixed function pipeline only, and the fixed function pipeline doesn't do instancing */
- stateblock->device->instancedDraw = FALSE;
+ device->instancedDraw = FALSE;
/* Blend Data ---------------------------------------------- */
if ((si->use_map & (1 << WINED3D_FFP_BLENDWEIGHT))
|| si->use_map & (1 << WINED3D_FFP_BLENDINDICES))
{
e = &si->elements[WINED3D_FFP_BLENDWEIGHT];
- stream = &stateblock->state.streams[e->stream_idx];
+ stream = &state->streams[e->stream_idx];
if (gl_info->supported[ARB_VERTEX_BLEND])
{
TRACE("Blend %u %p %u\n", e->format->component_count,
- e->data.addr + stateblock->state.load_base_vertex_index * e->stride, e->stride + stream->offset);
+ e->data.addr + state->load_base_vertex_index * e->stride, e->stride + stream->offset);
glEnableClientState(GL_WEIGHT_ARRAY_ARB);
checkGLcall("glEnableClientState(GL_WEIGHT_ARRAY_ARB)");
@@ -4272,9 +4271,9 @@ static void loadVertexData(const struct wined3d_context *context, struct wined3d
e->format->gl_vtx_format,
e->format->gl_vtx_type,
e->stride,
- e->data.addr + stateblock->state.load_base_vertex_index * e->stride + stream->offset);
+ e->data.addr + state->load_base_vertex_index * e->stride + stream->offset);
GL_EXTCALL(glWeightPointerARB(e->format->gl_vtx_format, e->format->gl_vtx_type, e->stride,
- e->data.addr + stateblock->state.load_base_vertex_index * e->stride + stream->offset));
+ e->data.addr + state->load_base_vertex_index * e->stride + stream->offset));
checkGLcall("glWeightPointerARB");
@@ -4316,7 +4315,7 @@ static void loadVertexData(const struct wined3d_context *context, struct wined3d
if (si->use_map & (1 << WINED3D_FFP_POSITION))
{
e = &si->elements[WINED3D_FFP_POSITION];
- stream = &stateblock->state.streams[e->stream_idx];
+ stream = &state->streams[e->stream_idx];
if (curVBO != e->data.buffer_object)
{
@@ -4336,17 +4335,17 @@ static void loadVertexData(const struct wined3d_context *context, struct wined3d
if (!e->data.buffer_object)
{
TRACE("glVertexPointer(3, %#x, %#x, %p);\n", e->format->gl_vtx_type, e->stride,
- e->data.addr + stateblock->state.load_base_vertex_index * e->stride + stream->offset);
+ e->data.addr + state->load_base_vertex_index * e->stride + stream->offset);
glVertexPointer(3 /* min(e->format->gl_vtx_format, 3) */, e->format->gl_vtx_type, e->stride,
- e->data.addr + stateblock->state.load_base_vertex_index * e->stride + stream->offset);
+ e->data.addr + state->load_base_vertex_index * e->stride + stream->offset);
}
else
{
TRACE("glVertexPointer(%#x, %#x, %#x, %p);\n",
e->format->gl_vtx_format, e->format->gl_vtx_type, e->stride,
- e->data.addr + stateblock->state.load_base_vertex_index * e->stride + stream->offset);
+ e->data.addr + state->load_base_vertex_index * e->stride + stream->offset);
glVertexPointer(e->format->gl_vtx_format, e->format->gl_vtx_type, e->stride,
- e->data.addr + stateblock->state.load_base_vertex_index * e->stride + stream->offset);
+ e->data.addr + state->load_base_vertex_index * e->stride + stream->offset);
}
checkGLcall("glVertexPointer(...)");
glEnableClientState(GL_VERTEX_ARRAY);
@@ -4357,7 +4356,7 @@ static void loadVertexData(const struct wined3d_context *context, struct wined3d
if (si->use_map & (1 << WINED3D_FFP_NORMAL))
{
e = &si->elements[WINED3D_FFP_NORMAL];
- stream = &stateblock->state.streams[e->stream_idx];
+ stream = &state->streams[e->stream_idx];
if (curVBO != e->data.buffer_object)
{
@@ -4367,9 +4366,9 @@ static void loadVertexData(const struct wined3d_context *context, struct wined3d
}
TRACE("glNormalPointer(%#x, %#x, %p);\n", e->format->gl_vtx_type, e->stride,
- e->data.addr + stateblock->state.load_base_vertex_index * e->stride + stream->offset);
+ e->data.addr + state->load_base_vertex_index * e->stride + stream->offset);
glNormalPointer(e->format->gl_vtx_type, e->stride,
- e->data.addr + stateblock->state.load_base_vertex_index * e->stride + stream->offset);
+ e->data.addr + state->load_base_vertex_index * e->stride + stream->offset);
checkGLcall("glNormalPointer(...)");
glEnableClientState(GL_NORMAL_ARRAY);
checkGLcall("glEnableClientState(GL_NORMAL_ARRAY)");
@@ -4391,7 +4390,7 @@ static void loadVertexData(const struct wined3d_context *context, struct wined3d
if (si->use_map & (1 << WINED3D_FFP_DIFFUSE))
{
e = &si->elements[WINED3D_FFP_DIFFUSE];
- stream = &stateblock->state.streams[e->stream_idx];
+ stream = &state->streams[e->stream_idx];
if (curVBO != e->data.buffer_object)
{
@@ -4402,9 +4401,9 @@ static void loadVertexData(const struct wined3d_context *context, struct wined3d
TRACE("glColorPointer(%#x, %#x %#x, %p);\n",
e->format->gl_vtx_format, e->format->gl_vtx_type, e->stride,
- e->data.addr + stateblock->state.load_base_vertex_index * e->stride + stream->offset);
+ e->data.addr + state->load_base_vertex_index * e->stride + stream->offset);
glColorPointer(e->format->gl_vtx_format, e->format->gl_vtx_type, e->stride,
- e->data.addr + stateblock->state.load_base_vertex_index * e->stride + stream->offset);
+ e->data.addr + state->load_base_vertex_index * e->stride + stream->offset);
checkGLcall("glColorPointer(4, GL_UNSIGNED_BYTE, ...)");
glEnableClientState(GL_COLOR_ARRAY);
checkGLcall("glEnableClientState(GL_COLOR_ARRAY)");
@@ -4420,7 +4419,7 @@ static void loadVertexData(const struct wined3d_context *context, struct wined3d
TRACE("setting specular colour\n");
e = &si->elements[WINED3D_FFP_SPECULAR];
- stream = &stateblock->state.streams[e->stream_idx];
+ stream = &state->streams[e->stream_idx];
if (gl_info->supported[EXT_SECONDARY_COLOR])
{
@@ -4442,9 +4441,9 @@ static void loadVertexData(const struct wined3d_context *context, struct wined3d
* 4 component secondary colors use it
*/
TRACE("glSecondaryColorPointer(%#x, %#x, %#x, %p);\n", format, type, e->stride,
- e->data.addr + stateblock->state.load_base_vertex_index * e->stride + stream->offset);
+ e->data.addr + state->load_base_vertex_index * e->stride + stream->offset);
GL_EXTCALL(glSecondaryColorPointerEXT(format, type, e->stride,
- e->data.addr + stateblock->state.load_base_vertex_index * e->stride + stream->offset));
+ e->data.addr + state->load_base_vertex_index * e->stride + stream->offset));
checkGLcall("glSecondaryColorPointerEXT(format, type, ...)");
}
else
@@ -4453,9 +4452,9 @@ static void loadVertexData(const struct wined3d_context *context, struct wined3d
{
case GL_UNSIGNED_BYTE:
TRACE("glSecondaryColorPointer(3, GL_UNSIGNED_BYTE, %#x, %p);\n", e->stride,
- e->data.addr + stateblock->state.load_base_vertex_index * e->stride + stream->offset);
+ e->data.addr + state->load_base_vertex_index * e->stride + stream->offset);
GL_EXTCALL(glSecondaryColorPointerEXT(3, GL_UNSIGNED_BYTE, e->stride,
- e->data.addr + stateblock->state.load_base_vertex_index * e->stride + stream->offset));
+ e->data.addr + state->load_base_vertex_index * e->stride + stream->offset));
checkGLcall("glSecondaryColorPointerEXT(3, GL_UNSIGNED_BYTE, ...)");
break;
@@ -4463,9 +4462,9 @@ static void loadVertexData(const struct wined3d_context *context, struct wined3d
FIXME("Add 4 component specular color pointers for type %x\n", type);
/* Make sure that the right color component is dropped */
TRACE("glSecondaryColorPointer(3, %#x, %#x, %p);\n", type, e->stride,
- e->data.addr + stateblock->state.load_base_vertex_index * e->stride + stream->offset);
+ e->data.addr + state->load_base_vertex_index * e->stride + stream->offset);
GL_EXTCALL(glSecondaryColorPointerEXT(3, type, e->stride,
- e->data.addr + stateblock->state.load_base_vertex_index * e->stride + stream->offset));
+ e->data.addr + state->load_base_vertex_index * e->stride + stream->offset));
checkGLcall("glSecondaryColorPointerEXT(3, type, ...)");
}
}
@@ -4491,14 +4490,15 @@ static void loadVertexData(const struct wined3d_context *context, struct wined3d
}
/* Texture coords -------------------------------------------*/
- load_tex_coords(context, si, &curVBO, &stateblock->state);
+ load_tex_coords(context, si, &curVBO, state);
}
-static void streamsrc(DWORD state, struct wined3d_stateblock *stateblock, struct wined3d_context *context)
+static void streamsrc(DWORD state_id, struct wined3d_stateblock *stateblock, struct wined3d_context *context)
{
+ const struct wined3d_state *state = &stateblock->state;
struct wined3d_device *device = stateblock->device;
- BOOL load_numbered = use_vs(&stateblock->state) && !device->useDrawStridedSlow;
- BOOL load_named = !use_vs(&stateblock->state) && !device->useDrawStridedSlow;
+ BOOL load_numbered = use_vs(state) && !device->useDrawStridedSlow;
+ BOOL load_named = !use_vs(state) && !device->useDrawStridedSlow;
if (isStateDirty(context, STATE_VDECL)) return;
if (context->numberedArraysLoaded && !load_numbered)
@@ -4509,20 +4509,20 @@ static void streamsrc(DWORD state, struct wined3d_stateblock *stateblock, struct
}
else if (context->namedArraysLoaded)
{
- unloadVertexData(context->gl_info);
+ unload_vertex_data(context->gl_info);
context->namedArraysLoaded = FALSE;
}
if (load_numbered)
{
TRACE("Loading numbered arrays\n");
- load_numbered_arrays(context, &device->strided_streams, &stateblock->state);
+ load_numbered_arrays(context, &device->strided_streams, state);
context->numberedArraysLoaded = TRUE;
}
else if (load_named)
{
TRACE("Loading vertex data\n");
- loadVertexData(context, stateblock, &device->strided_streams);
+ load_vertex_data(context, &device->strided_streams, state);
context->namedArraysLoaded = TRUE;
}
}
--
1.7.3.4
More information about the wine-patches
mailing list