mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-24 06:40:11 +01:00
i965: in set_read_rb_tex_image() check _mesa_meta_bind_rb_as_tex_image() did succeed
Check if _mesa_meta_bind_rb_as_tex_image() did give the texture. If no texture was given there is already either GL_INVALID_VALUE or GL_OUT_OF_MEMORY error set in context. Signed-off-by: Juha-Pekka Heikkila <juhapekka.heikkila@gmail.com> Reviewed-by: Topi Pohjolainen <topi.pohjolainen@intel.com>
This commit is contained in:
parent
5a6ec26aec
commit
a82b29d526
2 changed files with 18 additions and 5 deletions
|
|
@ -624,13 +624,20 @@ _mesa_meta_bind_rb_as_tex_image(struct gl_context *ctx,
|
|||
GLenum *target)
|
||||
{
|
||||
struct gl_texture_image *texImage;
|
||||
GLuint tempTex;
|
||||
|
||||
if (rb->NumSamples > 1)
|
||||
*target = GL_TEXTURE_2D_MULTISAMPLE;
|
||||
else
|
||||
*target = GL_TEXTURE_2D;
|
||||
|
||||
_mesa_GenTextures(1, tex);
|
||||
tempTex = 0;
|
||||
_mesa_GenTextures(1, &tempTex);
|
||||
if (tempTex == 0)
|
||||
return false;
|
||||
|
||||
*tex = tempTex;
|
||||
|
||||
_mesa_BindTexture(*target, *tex);
|
||||
*texObj = _mesa_lookup_texture(ctx, *tex);
|
||||
texImage = _mesa_get_tex_image(ctx, *texObj, *target, 0);
|
||||
|
|
|
|||
|
|
@ -371,7 +371,7 @@ prepare_vertex_data(void)
|
|||
_mesa_BufferSubData(GL_ARRAY_BUFFER_ARB, 0, sizeof(verts), verts);
|
||||
}
|
||||
|
||||
static void
|
||||
static bool
|
||||
set_read_rb_tex_image(struct gl_context *ctx, struct fb_tex_blit_state *blit,
|
||||
GLenum *target)
|
||||
{
|
||||
|
|
@ -387,8 +387,10 @@ set_read_rb_tex_image(struct gl_context *ctx, struct fb_tex_blit_state *blit,
|
|||
*target = tex_obj->Target;
|
||||
level = att->TextureLevel;
|
||||
} else {
|
||||
_mesa_meta_bind_rb_as_tex_image(ctx, rb, &blit->tempTex, &tex_obj,
|
||||
target);
|
||||
if (!_mesa_meta_bind_rb_as_tex_image(ctx, rb, &blit->tempTex, &tex_obj,
|
||||
target)) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
blit->baseLevelSave = tex_obj->BaseLevel;
|
||||
|
|
@ -396,6 +398,7 @@ set_read_rb_tex_image(struct gl_context *ctx, struct fb_tex_blit_state *blit,
|
|||
blit->stencilSamplingSave = tex_obj->StencilSampling;
|
||||
blit->sampler = _mesa_meta_setup_sampler(ctx, tex_obj, *target,
|
||||
GL_NEAREST, level);
|
||||
return true;
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
@ -424,7 +427,9 @@ brw_meta_stencil_blit(struct brw_context *brw,
|
|||
_mesa_DrawBuffer(GL_COLOR_ATTACHMENT0);
|
||||
ctx->DrawBuffer->_Status = GL_FRAMEBUFFER_COMPLETE;
|
||||
|
||||
set_read_rb_tex_image(ctx, &blit, &target);
|
||||
if (!set_read_rb_tex_image(ctx, &blit, &target)) {
|
||||
goto error;
|
||||
}
|
||||
|
||||
_mesa_TexParameteri(target, GL_DEPTH_STENCIL_TEXTURE_MODE,
|
||||
GL_STENCIL_INDEX);
|
||||
|
|
@ -445,6 +450,7 @@ brw_meta_stencil_blit(struct brw_context *brw,
|
|||
|
||||
_mesa_DrawArrays(GL_TRIANGLE_FAN, 0, 4);
|
||||
|
||||
error:
|
||||
_mesa_meta_fb_tex_blit_end(ctx, target, &blit);
|
||||
_mesa_meta_end(ctx);
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue