Skip to content
Snippets Groups Projects
Commit 96085dc4 authored by Brian Paul's avatar Brian Paul
Browse files

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.
(cherry picked from commit f5c810c4)
parent a128b62a
No related branches found
Tags android-x86-2.2
No related merge requests found
......@@ -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
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment