mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-01-06 13:10:10 +01:00
st/mesa: use private pipe_sampler_view in decompress_with_blit()
Similar to the previous commit. Also fix incorrect setting of the sampler view's state after it's created. We need to specify the first/last_level fields in the template instead. NOTE: This is a candidate for the 8.0 branch. Reviewed-by: Jose Fonseca <jfonseca@vmware.com>
This commit is contained in:
parent
c5ba6a7807
commit
0315cb9f8f
1 changed files with 18 additions and 4 deletions
|
|
@ -609,8 +609,7 @@ decompress_with_blit(struct gl_context * ctx,
|
|||
struct pipe_context *pipe = st->pipe;
|
||||
struct st_texture_image *stImage = st_texture_image(texImage);
|
||||
struct st_texture_object *stObj = st_texture_object(texImage->TexObject);
|
||||
struct pipe_sampler_view *src_view =
|
||||
st_get_texture_sampler_view(stObj, pipe);
|
||||
struct pipe_sampler_view *src_view;
|
||||
const GLuint width = texImage->Width;
|
||||
const GLuint height = texImage->Height;
|
||||
struct pipe_surface *dst_surface;
|
||||
|
|
@ -632,8 +631,21 @@ decompress_with_blit(struct gl_context * ctx,
|
|||
pipe->render_condition(pipe, NULL, 0);
|
||||
}
|
||||
|
||||
/* Choose the source mipmap level */
|
||||
src_view->u.tex.first_level = src_view->u.tex.last_level = texImage->Level;
|
||||
/* Create sampler view that limits fetches to the source mipmap level */
|
||||
{
|
||||
struct pipe_sampler_view sv_temp;
|
||||
|
||||
u_sampler_view_default_template(&sv_temp, stObj->pt, stObj->pt->format);
|
||||
|
||||
sv_temp.u.tex.first_level =
|
||||
sv_temp.u.tex.last_level = texImage->Level;
|
||||
|
||||
src_view = pipe->create_sampler_view(pipe, stObj->pt, &sv_temp);
|
||||
if (!src_view) {
|
||||
_mesa_error(ctx, GL_OUT_OF_MEMORY, "glGetTexImage");
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
/* blit/render/decompress */
|
||||
util_blit_pixels_tex(st->blit,
|
||||
|
|
@ -702,6 +714,8 @@ decompress_with_blit(struct gl_context * ctx,
|
|||
|
||||
/* destroy the temp / dest surface */
|
||||
util_destroy_rgba_surface(dst_texture, dst_surface);
|
||||
|
||||
pipe_sampler_view_reference(&src_view, NULL);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue