v3dv: fix textureSize() for cube arrays
For these we want to divide the number of layers by 6. Fixes: dEQP-VK.glsl.texture_functions.query.texturesize.*samplercubearray* Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6766>
This commit is contained in:

committed by
Marge Bot

parent
b6c2fde4b9
commit
6053e85ee4
@@ -568,6 +568,7 @@ v3dv_CreateImageView(VkDevice _device,
|
||||
|
||||
iview->image = image;
|
||||
iview->aspects = range->aspectMask;
|
||||
iview->type = pCreateInfo->viewType;
|
||||
|
||||
iview->base_level = range->baseMipLevel;
|
||||
iview->max_level = iview->base_level + v3dv_level_count(image, range) - 1;
|
||||
|
@@ -418,6 +418,7 @@ struct v3dv_image_view {
|
||||
const struct v3dv_image *image;
|
||||
VkImageAspectFlags aspects;
|
||||
VkExtent3D extent;
|
||||
VkImageViewType type;
|
||||
|
||||
VkFormat vk_format;
|
||||
const struct v3dv_format *format;
|
||||
|
@@ -248,7 +248,12 @@ get_texture_size(struct v3dv_cmd_buffer *cmd_buffer,
|
||||
return image_view->extent.depth;
|
||||
case QUNIFORM_IMAGE_ARRAY_SIZE:
|
||||
case QUNIFORM_TEXTURE_ARRAY_SIZE:
|
||||
return image_view->last_layer - image_view->first_layer + 1;
|
||||
if (image_view->type != VK_IMAGE_VIEW_TYPE_CUBE_ARRAY) {
|
||||
return image_view->last_layer - image_view->first_layer + 1;
|
||||
} else {
|
||||
assert((image_view->last_layer - image_view->first_layer + 1) % 6 == 0);
|
||||
return (image_view->last_layer - image_view->first_layer + 1) / 6;
|
||||
}
|
||||
case QUNIFORM_TEXTURE_LEVELS:
|
||||
return image_view->max_level - image_view->base_level + 1;
|
||||
default:
|
||||
|
Reference in New Issue
Block a user