g3dvl: Work around SP tex cache bug, specify resource usage flags.

This commit is contained in:
Younes Manton
2008-06-18 22:21:11 -04:00
parent 14d4f9e44e
commit 0a6aec8c0f
2 changed files with 9 additions and 6 deletions
@@ -2218,7 +2218,6 @@ int vlDestroyContext(struct VL_CONTEXT *context)
vlDestroy(context);
context->pipe->screen->destroy(context->pipe->screen);
context->pipe->destroy(context->pipe);
free(context);
@@ -31,7 +31,7 @@ static int vlGrabBlocks
0, 0, 0, PIPE_BUFFER_USAGE_CPU_WRITE
);
texels = pipe_surface_map(tex_surface, 0);
texels = pipe_surface_map(tex_surface, PIPE_BUFFER_USAGE_CPU_WRITE);
for (b = 0; b < 4; ++b)
{
@@ -131,7 +131,7 @@ static int vlGrabBlocks
0, 0, 0, PIPE_BUFFER_USAGE_CPU_WRITE
);
texels = pipe_surface_map(tex_surface, 0);
texels = pipe_surface_map(tex_surface, PIPE_BUFFER_USAGE_CPU_WRITE);
if ((coded_block_pattern >> (b + 4)) & 1)
{
@@ -165,6 +165,9 @@ static int vlGrabBlocks
pipe_surface_unmap(tex_surface);
}
/* XXX: Texture cache is not invalidated when texture contents change */
context->pipe->flush(context->pipe, PIPE_FLUSH_TEXTURE_CACHE, NULL);
return 0;
}
@@ -265,7 +268,7 @@ int vlRenderIMacroBlock
(
pipe->screen,
surface->texture,
0, 0, 0, PIPE_BUFFER_USAGE_CPU_READ | PIPE_BUFFER_USAGE_CPU_WRITE
0, 0, 0, PIPE_BUFFER_USAGE_GPU_READ | PIPE_BUFFER_USAGE_GPU_WRITE
);
pipe->set_framebuffer_state(pipe, &surface->context->states.mc.render_target);
pipe->set_sampler_textures(pipe, 3, surface->context->states.mc.textures);
@@ -346,7 +349,7 @@ int vlRenderPMacroBlock
(
pipe->screen,
surface->texture,
0, 0, 0, PIPE_BUFFER_USAGE_CPU_READ | PIPE_BUFFER_USAGE_CPU_WRITE
0, 0, 0, PIPE_BUFFER_USAGE_GPU_READ | PIPE_BUFFER_USAGE_GPU_WRITE
);
pipe->set_framebuffer_state(pipe, &surface->context->states.mc.render_target);
@@ -434,7 +437,7 @@ int vlRenderBMacroBlock
(
pipe->screen,
surface->texture,
0, 0, 0, PIPE_BUFFER_USAGE_CPU_READ | PIPE_BUFFER_USAGE_CPU_WRITE
0, 0, 0, PIPE_BUFFER_USAGE_GPU_READ | PIPE_BUFFER_USAGE_GPU_WRITE
);
pipe->set_framebuffer_state(pipe, &surface->context->states.mc.render_target);
@@ -510,6 +513,7 @@ int vlPutSurface
destw,
desth,
PIPE_FORMAT_A8R8G8B8_UNORM,
/*XXX: SoftPipe doesn't change GPU usage to CPU like it does for textures */
PIPE_BUFFER_USAGE_CPU_READ | PIPE_BUFFER_USAGE_CPU_WRITE,
0
);