From b91a85a195dd02d64453fc6ebf0b0ecd521f19c0 Mon Sep 17 00:00:00 2001 From: Erik Faye-Lund Date: Sun, 24 Feb 2019 21:11:40 +0100 Subject: [PATCH] renderer: always restore FBO binding Without this, the next patch gets trickier, because we try to *avoid* passing down the wrong data rather than trying to react to it. Signed-off-by: Erik Faye-Lund Reviewed-by: Gurchetan Singh --- src/vrend_renderer.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/vrend_renderer.c b/src/vrend_renderer.c index 6ddf770..8d04edd 100644 --- a/src/vrend_renderer.c +++ b/src/vrend_renderer.c @@ -6556,6 +6556,7 @@ static int vrend_transfer_send_readpixels(struct vrend_context *ctx, int elsize = util_format_get_blocksize(res->base.format); float depth_scale; int row_stride = info->stride / elsize; + GLint old_fbo; vrend_use_program(ctx, 0); @@ -6585,6 +6586,8 @@ static int vrend_transfer_send_readpixels(struct vrend_context *ctx, row_stride = util_format_get_nblocksx(res->base.format, u_minify(res->base.width0, info->level)); } + glGetIntegerv(GL_DRAW_FRAMEBUFFER_BINDING, &old_fbo); + if (res->readback_fb_id == 0 || (int)res->readback_fb_level != info->level || (int)res->readback_fb_z != info->box->z) { @@ -6692,8 +6695,7 @@ static int vrend_transfer_send_readpixels(struct vrend_context *ctx, free(data); } - if (!info->context0 && ctx->sub) - glBindFramebuffer(GL_FRAMEBUFFER, ctx->sub->fb_id); + glBindFramebuffer(GL_FRAMEBUFFER, old_fbo); return 0; }