wined3d: Optimize scanning for changed state in wined3d_stateblock_capture().
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com> Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
94c1f89e10
commit
f4788c4b08
|
@ -852,9 +852,9 @@ void CDECL wined3d_stateblock_capture(struct wined3d_stateblock *stateblock,
|
||||||
}
|
}
|
||||||
|
|
||||||
map = stateblock->changed.streamSource;
|
map = stateblock->changed.streamSource;
|
||||||
for (i = 0; map; map >>= 1, ++i)
|
while (map)
|
||||||
{
|
{
|
||||||
if (!(map & 1)) continue;
|
i = wined3d_bit_scan(&map);
|
||||||
|
|
||||||
if (stateblock->stateblock_state.streams[i].stride != state->streams[i].stride
|
if (stateblock->stateblock_state.streams[i].stride != state->streams[i].stride
|
||||||
|| stateblock->stateblock_state.streams[i].offset != state->streams[i].offset
|
|| stateblock->stateblock_state.streams[i].offset != state->streams[i].offset
|
||||||
|
@ -877,9 +877,9 @@ void CDECL wined3d_stateblock_capture(struct wined3d_stateblock *stateblock,
|
||||||
}
|
}
|
||||||
|
|
||||||
map = stateblock->changed.streamFreq;
|
map = stateblock->changed.streamFreq;
|
||||||
for (i = 0; map; map >>= 1, ++i)
|
while (map)
|
||||||
{
|
{
|
||||||
if (!(map & 1)) continue;
|
i = wined3d_bit_scan(&map);
|
||||||
|
|
||||||
if (stateblock->stateblock_state.streams[i].frequency != state->streams[i].frequency
|
if (stateblock->stateblock_state.streams[i].frequency != state->streams[i].frequency
|
||||||
|| stateblock->stateblock_state.streams[i].flags != state->streams[i].flags)
|
|| stateblock->stateblock_state.streams[i].flags != state->streams[i].flags)
|
||||||
|
@ -893,9 +893,9 @@ void CDECL wined3d_stateblock_capture(struct wined3d_stateblock *stateblock,
|
||||||
}
|
}
|
||||||
|
|
||||||
map = stateblock->changed.clipplane;
|
map = stateblock->changed.clipplane;
|
||||||
for (i = 0; map; map >>= 1, ++i)
|
while (map)
|
||||||
{
|
{
|
||||||
if (!(map & 1)) continue;
|
i = wined3d_bit_scan(&map);
|
||||||
|
|
||||||
if (memcmp(&stateblock->stateblock_state.clip_planes[i], &state->clip_planes[i], sizeof(state->clip_planes[i])))
|
if (memcmp(&stateblock->stateblock_state.clip_planes[i], &state->clip_planes[i], sizeof(state->clip_planes[i])))
|
||||||
{
|
{
|
||||||
|
@ -929,9 +929,9 @@ void CDECL wined3d_stateblock_capture(struct wined3d_stateblock *stateblock,
|
||||||
|
|
||||||
/* Samplers */
|
/* Samplers */
|
||||||
map = stateblock->changed.textures;
|
map = stateblock->changed.textures;
|
||||||
for (i = 0; map; map >>= 1, ++i)
|
while (map)
|
||||||
{
|
{
|
||||||
if (!(map & 1)) continue;
|
i = wined3d_bit_scan(&map);
|
||||||
|
|
||||||
TRACE("Updating texture %u to %p (was %p).\n",
|
TRACE("Updating texture %u to %p (was %p).\n",
|
||||||
i, state->textures[i], stateblock->stateblock_state.textures[i]);
|
i, state->textures[i], stateblock->stateblock_state.textures[i]);
|
||||||
|
|
Loading…
Reference in New Issue