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 <charmainel@vmware.com>
This commit is contained in:
@@ -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;
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user