anv: Stop assuming planes are in aspect-bit-order
Previously, we initialized vplane in anv_CreateImageView to 0 and incremented it every iteration of the aspect loop. This only works because planes are guaranteed to be in aspect-bit-order which wasn't documented anywhere. Instead, drop this assumption and burn a couple CPU cycles properly calculating vplane. While we're here, make iplane const as well. Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12141>
This commit is contained in:

committed by
Marge Bot

parent
7e8fe42816
commit
32157f9059
@@ -2812,10 +2812,11 @@ anv_CreateImageView(VkDevice _device,
|
|||||||
/* Now go through the underlying image selected planes (computed in
|
/* Now go through the underlying image selected planes (computed in
|
||||||
* expanded_aspects) and map them to planes in the image view.
|
* expanded_aspects) and map them to planes in the image view.
|
||||||
*/
|
*/
|
||||||
uint32_t vplane = 0;
|
|
||||||
anv_foreach_image_aspect_bit(iaspect_bit, image, expanded_aspects) {
|
anv_foreach_image_aspect_bit(iaspect_bit, image, expanded_aspects) {
|
||||||
uint32_t iplane =
|
const uint32_t iplane =
|
||||||
anv_image_aspect_to_plane(image->aspects, 1UL << iaspect_bit);
|
anv_image_aspect_to_plane(image->aspects, 1UL << iaspect_bit);
|
||||||
|
const uint32_t vplane =
|
||||||
|
anv_image_aspect_to_plane(expanded_aspects, 1UL << iaspect_bit);
|
||||||
struct anv_format_plane format;
|
struct anv_format_plane format;
|
||||||
if (image->aspects & (VK_IMAGE_ASPECT_DEPTH_BIT |
|
if (image->aspects & (VK_IMAGE_ASPECT_DEPTH_BIT |
|
||||||
VK_IMAGE_ASPECT_STENCIL_BIT)) {
|
VK_IMAGE_ASPECT_STENCIL_BIT)) {
|
||||||
@@ -2946,8 +2947,6 @@ anv_CreateImageView(VkDevice _device,
|
|||||||
&iview->planes[vplane].writeonly_storage_surface_state,
|
&iview->planes[vplane].writeonly_storage_surface_state,
|
||||||
NULL);
|
NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
vplane++;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
*pView = anv_image_view_to_handle(iview);
|
*pView = anv_image_view_to_handle(iview);
|
||||||
|
Reference in New Issue
Block a user