mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-05 16:08:04 +02:00
st/mesa: use the wrapped renderbuffer in CopyPixels()
Fixes assertion failures when copying stencil pixels. NOTE: this is a candidate for the 7.9 branch.
This commit is contained in:
parent
10dcc989ab
commit
f5c810c42f
1 changed files with 11 additions and 1 deletions
|
|
@ -832,7 +832,7 @@ copy_stencil_pixels(GLcontext *ctx, GLint srcx, GLint srcy,
|
|||
GLsizei width, GLsizei height,
|
||||
GLint dstx, GLint dsty)
|
||||
{
|
||||
struct st_renderbuffer *rbDraw = st_renderbuffer(ctx->DrawBuffer->_StencilBuffer);
|
||||
struct st_renderbuffer *rbDraw;
|
||||
struct pipe_context *pipe = st_context(ctx)->pipe;
|
||||
enum pipe_transfer_usage usage;
|
||||
struct pipe_transfer *ptDraw;
|
||||
|
|
@ -846,6 +846,13 @@ copy_stencil_pixels(GLcontext *ctx, GLint srcx, GLint srcy,
|
|||
return;
|
||||
}
|
||||
|
||||
/* Get the dest renderbuffer. If there's a wrapper, use the
|
||||
* underlying renderbuffer.
|
||||
*/
|
||||
rbDraw = st_renderbuffer(ctx->DrawBuffer->_StencilBuffer);
|
||||
if (rbDraw->Base.Wrapped)
|
||||
rbDraw = st_renderbuffer(rbDraw->Base.Wrapped);
|
||||
|
||||
/* this will do stencil pixel transfer ops */
|
||||
st_read_stencil_pixels(ctx, srcx, srcy, width, height,
|
||||
GL_STENCIL_INDEX, GL_UNSIGNED_BYTE,
|
||||
|
|
@ -968,6 +975,9 @@ st_CopyPixels(GLcontext *ctx, GLint srcx, GLint srcy,
|
|||
driver_vp = make_passthrough_vertex_shader(st, GL_TRUE);
|
||||
}
|
||||
|
||||
if (rbRead->Base.Wrapped)
|
||||
rbRead = st_renderbuffer(rbRead->Base.Wrapped);
|
||||
|
||||
sample_count = rbRead->texture->nr_samples;
|
||||
/* I believe this would be legal, presumably would need to do a resolve
|
||||
for color, and for depth/stencil spec says to just use one of the
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue