From 6158c0b5d8b6367a46acbe2fe20357210422c96f Mon Sep 17 00:00:00 2001 From: Brian Paul Date: Fri, 30 Jun 2017 14:11:01 -0700 Subject: [PATCH] svga: don't call svga_texture_device_format_has_alpha() for PIPE_BUFFER svga_texture_device_format_has_alpha() is only intended to work for texture resources, not buffer resources. This fixes a failed assertion in the svga_texture() cast function when running texture buffer tests. Also, add an assertion in svga_texture_device_format_has_alpha() to catch the issue sooner. Reviewed-by: Charmaine Lee --- src/gallium/drivers/svga/svga_resource_texture.c | 3 +++ src/gallium/drivers/svga/svga_shader.c | 3 ++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/gallium/drivers/svga/svga_resource_texture.c b/src/gallium/drivers/svga/svga_resource_texture.c index 84441d116dd..5a684b7933b 100644 --- a/src/gallium/drivers/svga/svga_resource_texture.c +++ b/src/gallium/drivers/svga/svga_resource_texture.c @@ -1539,6 +1539,9 @@ svga_texture_transfer_unmap_upload(struct svga_context *svga, boolean svga_texture_device_format_has_alpha(struct pipe_resource *texture) { + /* the svga_texture() call below is invalid for PIPE_BUFFER resources */ + assert(texture->target != PIPE_BUFFER); + enum svga3d_block_desc block_desc = svga3dsurface_get_desc(svga_texture(texture)->key.format)->block_desc; diff --git a/src/gallium/drivers/svga/svga_shader.c b/src/gallium/drivers/svga/svga_shader.c index ef3b021d404..5ff6f034cf8 100644 --- a/src/gallium/drivers/svga/svga_shader.c +++ b/src/gallium/drivers/svga/svga_shader.c @@ -224,7 +224,8 @@ svga_init_shader_key_common(const struct svga_context *svga, } } - swizzle_tab = (!util_format_has_alpha(view->format) && + swizzle_tab = (view->texture->target != PIPE_BUFFER && + !util_format_has_alpha(view->format) && svga_texture_device_format_has_alpha(view->texture)) ? set_alpha : copy_alpha; -- 2.30.2