aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBrian Paul <[email protected]>2012-02-13 14:46:11 -0700
committerBrian Paul <[email protected]>2012-02-15 14:09:01 -0700
commitc5ba6a780769c61ffc7c5b1de94b583671bc5418 (patch)
treee54fe587440b7fc514f599ce9650b546c9fe04c6
parent0bda900743702a2c0f95024f004e6210e59fd5dd (diff)
st/mesa: use private pipe_sampler_view in st_render_mipmap()
Rather than the one in st_texture_object. This sampler view really has no connection to the one used for rendering. Reviewed-by: Jose Fonseca <[email protected]>
-rw-r--r--src/mesa/state_tracker/st_gen_mipmap.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/src/mesa/state_tracker/st_gen_mipmap.c b/src/mesa/state_tracker/st_gen_mipmap.c
index d817a9c2b16..d3496642f54 100644
--- a/src/mesa/state_tracker/st_gen_mipmap.c
+++ b/src/mesa/state_tracker/st_gen_mipmap.c
@@ -75,10 +75,9 @@ st_render_mipmap(struct st_context *st,
{
struct pipe_context *pipe = st->pipe;
struct pipe_screen *screen = pipe->screen;
- struct pipe_sampler_view *psv = st_get_texture_sampler_view(stObj, pipe);
+ struct pipe_sampler_view *psv;
const uint face = _mesa_tex_target_to_face(target);
- assert(psv->texture == stObj->pt);
#if 0
assert(target != GL_TEXTURE_3D); /* implemented but untested */
#endif
@@ -86,11 +85,14 @@ st_render_mipmap(struct st_context *st,
/* check if we can render in the texture's format */
/* XXX should probably kill this and always use util_gen_mipmap
since this implements a sw fallback as well */
- if (!screen->is_format_supported(screen, psv->format, psv->texture->target,
+ if (!screen->is_format_supported(screen, stObj->pt->format,
+ stObj->pt->target,
0, PIPE_BIND_RENDER_TARGET)) {
return FALSE;
}
+ psv = st_create_texture_sampler_view(pipe, stObj->pt);
+
/* Disable conditional rendering. */
if (st->render_condition) {
pipe->render_condition(pipe, NULL, 0);
@@ -103,6 +105,8 @@ st_render_mipmap(struct st_context *st,
pipe->render_condition(pipe, st->render_condition, st->condition_mode);
}
+ pipe_sampler_view_reference(&psv, NULL);
+
return TRUE;
}