mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-01-07 21:40:20 +01:00
vulkan,anv: Move the image offset/extent sanitize helpers to common code
Reviewed-by: Dave Airlie <airlied@redhat.com> Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com> Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com> Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16873>
This commit is contained in:
parent
4923458577
commit
2c2b3e68e1
3 changed files with 37 additions and 37 deletions
|
|
@ -306,11 +306,11 @@ copy_image(struct anv_cmd_buffer *cmd_buffer,
|
|||
const VkImageCopy2 *region)
|
||||
{
|
||||
VkOffset3D srcOffset =
|
||||
anv_sanitize_image_offset(src_image->vk.image_type, region->srcOffset);
|
||||
vk_image_sanitize_offset(&src_image->vk, region->srcOffset);
|
||||
VkOffset3D dstOffset =
|
||||
anv_sanitize_image_offset(dst_image->vk.image_type, region->dstOffset);
|
||||
vk_image_sanitize_offset(&dst_image->vk, region->dstOffset);
|
||||
VkExtent3D extent =
|
||||
anv_sanitize_image_extent(src_image->vk.image_type, region->extent);
|
||||
vk_image_sanitize_extent(&src_image->vk, region->extent);
|
||||
|
||||
const uint32_t dst_level = region->dstSubresource.mipLevel;
|
||||
unsigned dst_base_layer, layer_count;
|
||||
|
|
@ -490,11 +490,11 @@ copy_buffer_to_image(struct anv_cmd_buffer *cmd_buffer,
|
|||
image_layout, ISL_AUX_USAGE_NONE,
|
||||
&image.surf);
|
||||
image.offset =
|
||||
anv_sanitize_image_offset(anv_image->vk.image_type, region->imageOffset);
|
||||
vk_image_sanitize_offset(&anv_image->vk, region->imageOffset);
|
||||
image.level = region->imageSubresource.mipLevel;
|
||||
|
||||
VkExtent3D extent =
|
||||
anv_sanitize_image_extent(anv_image->vk.image_type, region->imageExtent);
|
||||
vk_image_sanitize_extent(&anv_image->vk, region->imageExtent);
|
||||
if (anv_image->vk.image_type != VK_IMAGE_TYPE_3D) {
|
||||
image.offset.z = region->imageSubresource.baseArrayLayer;
|
||||
extent.depth =
|
||||
|
|
|
|||
|
|
@ -4226,38 +4226,6 @@ enum isl_format
|
|||
anv_isl_format_for_descriptor_type(const struct anv_device *device,
|
||||
VkDescriptorType type);
|
||||
|
||||
static inline VkExtent3D
|
||||
anv_sanitize_image_extent(const VkImageType imageType,
|
||||
const VkExtent3D imageExtent)
|
||||
{
|
||||
switch (imageType) {
|
||||
case VK_IMAGE_TYPE_1D:
|
||||
return (VkExtent3D) { imageExtent.width, 1, 1 };
|
||||
case VK_IMAGE_TYPE_2D:
|
||||
return (VkExtent3D) { imageExtent.width, imageExtent.height, 1 };
|
||||
case VK_IMAGE_TYPE_3D:
|
||||
return imageExtent;
|
||||
default:
|
||||
unreachable("invalid image type");
|
||||
}
|
||||
}
|
||||
|
||||
static inline VkOffset3D
|
||||
anv_sanitize_image_offset(const VkImageType imageType,
|
||||
const VkOffset3D imageOffset)
|
||||
{
|
||||
switch (imageType) {
|
||||
case VK_IMAGE_TYPE_1D:
|
||||
return (VkOffset3D) { imageOffset.x, 0, 0 };
|
||||
case VK_IMAGE_TYPE_2D:
|
||||
return (VkOffset3D) { imageOffset.x, imageOffset.y, 0 };
|
||||
case VK_IMAGE_TYPE_3D:
|
||||
return imageOffset;
|
||||
default:
|
||||
unreachable("invalid image type");
|
||||
}
|
||||
}
|
||||
|
||||
static inline uint32_t
|
||||
anv_rasterization_aa_mode(VkPolygonMode raster_mode,
|
||||
VkLineRasterizationModeEXT line_mode)
|
||||
|
|
|
|||
|
|
@ -125,6 +125,38 @@ vk_image_subresource_level_count(const struct vk_image *image,
|
|||
image->mip_levels - range->baseMipLevel : range->levelCount;
|
||||
}
|
||||
|
||||
static inline VkExtent3D
|
||||
vk_image_sanitize_extent(const struct vk_image *image,
|
||||
const VkExtent3D imageExtent)
|
||||
{
|
||||
switch (image->image_type) {
|
||||
case VK_IMAGE_TYPE_1D:
|
||||
return (VkExtent3D) { imageExtent.width, 1, 1 };
|
||||
case VK_IMAGE_TYPE_2D:
|
||||
return (VkExtent3D) { imageExtent.width, imageExtent.height, 1 };
|
||||
case VK_IMAGE_TYPE_3D:
|
||||
return imageExtent;
|
||||
default:
|
||||
unreachable("invalid image type");
|
||||
}
|
||||
}
|
||||
|
||||
static inline VkOffset3D
|
||||
vk_image_sanitize_offset(const struct vk_image *image,
|
||||
const VkOffset3D imageOffset)
|
||||
{
|
||||
switch (image->image_type) {
|
||||
case VK_IMAGE_TYPE_1D:
|
||||
return (VkOffset3D) { imageOffset.x, 0, 0 };
|
||||
case VK_IMAGE_TYPE_2D:
|
||||
return (VkOffset3D) { imageOffset.x, imageOffset.y, 0 };
|
||||
case VK_IMAGE_TYPE_3D:
|
||||
return imageOffset;
|
||||
default:
|
||||
unreachable("invalid image type");
|
||||
}
|
||||
}
|
||||
|
||||
struct vk_image_view {
|
||||
struct vk_object_base base;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue