anv/image: Add a vk_format field
We've been trying to move away from anv_format for a while and this should help with the transition. There are cases (mostly in meta) where we need the original format for the image and not the isl_format. These will be moved over to the new vk_format and everythign else will use the isl_format from the particular anv_surface.
This commit is contained in:
parent
0d7614dce6
commit
3200a81a55
|
@ -205,6 +205,7 @@ anv_image_create(VkDevice _device,
|
||||||
memset(image, 0, sizeof(*image));
|
memset(image, 0, sizeof(*image));
|
||||||
image->type = pCreateInfo->imageType;
|
image->type = pCreateInfo->imageType;
|
||||||
image->extent = pCreateInfo->extent;
|
image->extent = pCreateInfo->extent;
|
||||||
|
image->vk_format = pCreateInfo->format;
|
||||||
image->format = anv_format_for_vk_format(pCreateInfo->format);
|
image->format = anv_format_for_vk_format(pCreateInfo->format);
|
||||||
image->levels = pCreateInfo->mipLevels;
|
image->levels = pCreateInfo->mipLevels;
|
||||||
image->array_size = pCreateInfo->arrayLayers;
|
image->array_size = pCreateInfo->arrayLayers;
|
||||||
|
|
|
@ -858,7 +858,7 @@ void anv_CmdCopyImage(
|
||||||
.sType = VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO,
|
.sType = VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO,
|
||||||
.image = srcImage,
|
.image = srcImage,
|
||||||
.viewType = anv_meta_get_view_type(src_image),
|
.viewType = anv_meta_get_view_type(src_image),
|
||||||
.format = src_image->format->vk_format,
|
.format = src_image->vk_format,
|
||||||
.subresourceRange = {
|
.subresourceRange = {
|
||||||
.aspectMask = pRegions[r].srcSubresource.aspectMask,
|
.aspectMask = pRegions[r].srcSubresource.aspectMask,
|
||||||
.baseMipLevel = pRegions[r].srcSubresource.mipLevel,
|
.baseMipLevel = pRegions[r].srcSubresource.mipLevel,
|
||||||
|
@ -902,7 +902,7 @@ void anv_CmdCopyImage(
|
||||||
.sType = VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO,
|
.sType = VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO,
|
||||||
.image = destImage,
|
.image = destImage,
|
||||||
.viewType = anv_meta_get_view_type(dest_image),
|
.viewType = anv_meta_get_view_type(dest_image),
|
||||||
.format = dest_image->format->vk_format,
|
.format = dest_image->vk_format,
|
||||||
.subresourceRange = {
|
.subresourceRange = {
|
||||||
.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT,
|
.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT,
|
||||||
.baseMipLevel = pRegions[r].dstSubresource.mipLevel,
|
.baseMipLevel = pRegions[r].dstSubresource.mipLevel,
|
||||||
|
@ -955,7 +955,7 @@ void anv_CmdBlitImage(
|
||||||
.sType = VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO,
|
.sType = VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO,
|
||||||
.image = srcImage,
|
.image = srcImage,
|
||||||
.viewType = anv_meta_get_view_type(src_image),
|
.viewType = anv_meta_get_view_type(src_image),
|
||||||
.format = src_image->format->vk_format,
|
.format = src_image->vk_format,
|
||||||
.subresourceRange = {
|
.subresourceRange = {
|
||||||
.aspectMask = pRegions[r].srcSubresource.aspectMask,
|
.aspectMask = pRegions[r].srcSubresource.aspectMask,
|
||||||
.baseMipLevel = pRegions[r].srcSubresource.mipLevel,
|
.baseMipLevel = pRegions[r].srcSubresource.mipLevel,
|
||||||
|
@ -989,7 +989,7 @@ void anv_CmdBlitImage(
|
||||||
.sType = VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO,
|
.sType = VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO,
|
||||||
.image = destImage,
|
.image = destImage,
|
||||||
.viewType = anv_meta_get_view_type(dest_image),
|
.viewType = anv_meta_get_view_type(dest_image),
|
||||||
.format = dest_image->format->vk_format,
|
.format = dest_image->vk_format,
|
||||||
.subresourceRange = {
|
.subresourceRange = {
|
||||||
.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT,
|
.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT,
|
||||||
.baseMipLevel = pRegions[r].dstSubresource.mipLevel,
|
.baseMipLevel = pRegions[r].dstSubresource.mipLevel,
|
||||||
|
@ -1067,7 +1067,7 @@ void anv_CmdCopyBufferToImage(
|
||||||
ANV_FROM_HANDLE(anv_cmd_buffer, cmd_buffer, commandBuffer);
|
ANV_FROM_HANDLE(anv_cmd_buffer, cmd_buffer, commandBuffer);
|
||||||
ANV_FROM_HANDLE(anv_image, dest_image, destImage);
|
ANV_FROM_HANDLE(anv_image, dest_image, destImage);
|
||||||
VkDevice vk_device = anv_device_to_handle(cmd_buffer->device);
|
VkDevice vk_device = anv_device_to_handle(cmd_buffer->device);
|
||||||
const VkFormat orig_format = dest_image->format->vk_format;
|
const VkFormat orig_format = dest_image->vk_format;
|
||||||
struct anv_meta_saved_state saved_state;
|
struct anv_meta_saved_state saved_state;
|
||||||
|
|
||||||
meta_prepare_blit(cmd_buffer, &saved_state);
|
meta_prepare_blit(cmd_buffer, &saved_state);
|
||||||
|
@ -1194,7 +1194,7 @@ void anv_CmdCopyImageToBuffer(
|
||||||
.sType = VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO,
|
.sType = VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO,
|
||||||
.image = srcImage,
|
.image = srcImage,
|
||||||
.viewType = anv_meta_get_view_type(src_image),
|
.viewType = anv_meta_get_view_type(src_image),
|
||||||
.format = src_image->format->vk_format,
|
.format = src_image->vk_format,
|
||||||
.subresourceRange = {
|
.subresourceRange = {
|
||||||
.aspectMask = pRegions[r].imageSubresource.aspectMask,
|
.aspectMask = pRegions[r].imageSubresource.aspectMask,
|
||||||
.baseMipLevel = pRegions[r].imageSubresource.mipLevel,
|
.baseMipLevel = pRegions[r].imageSubresource.mipLevel,
|
||||||
|
@ -1205,7 +1205,7 @@ void anv_CmdCopyImageToBuffer(
|
||||||
},
|
},
|
||||||
cmd_buffer);
|
cmd_buffer);
|
||||||
|
|
||||||
VkFormat dest_format = src_image->format->vk_format;
|
VkFormat dest_format = src_image->vk_format;
|
||||||
if (dest_format == VK_FORMAT_S8_UINT) {
|
if (dest_format == VK_FORMAT_S8_UINT) {
|
||||||
dest_format = VK_FORMAT_R8_UINT;
|
dest_format = VK_FORMAT_R8_UINT;
|
||||||
}
|
}
|
||||||
|
|
|
@ -729,7 +729,7 @@ void anv_CmdClearColorImage(
|
||||||
.sType = VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO,
|
.sType = VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO,
|
||||||
.image = _image,
|
.image = _image,
|
||||||
.viewType = anv_meta_get_view_type(image),
|
.viewType = anv_meta_get_view_type(image),
|
||||||
.format = image->format->vk_format,
|
.format = image->vk_format,
|
||||||
.subresourceRange = {
|
.subresourceRange = {
|
||||||
.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT,
|
.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT,
|
||||||
.baseMipLevel = pRanges[r].baseMipLevel + l,
|
.baseMipLevel = pRanges[r].baseMipLevel + l,
|
||||||
|
|
|
@ -1443,6 +1443,10 @@ struct anv_surface {
|
||||||
|
|
||||||
struct anv_image {
|
struct anv_image {
|
||||||
VkImageType type;
|
VkImageType type;
|
||||||
|
/* The original VkFormat provided by the client. This may not match any
|
||||||
|
* of the actual surface formats.
|
||||||
|
*/
|
||||||
|
VkFormat vk_format;
|
||||||
const struct anv_format *format;
|
const struct anv_format *format;
|
||||||
VkExtent3D extent;
|
VkExtent3D extent;
|
||||||
uint32_t levels;
|
uint32_t levels;
|
||||||
|
|
Loading…
Reference in New Issue