bug-14786: Addressing layered subresources in vkCmdCopyImage
commit: ad27e2b Attempt at naming consistency
diff --git a/include/vulkan.h b/include/vulkan.h
index 8bc8862..fd7d207 100644
--- a/include/vulkan.h
+++ b/include/vulkan.h
@@ -1179,7 +1179,7 @@
typedef struct {
VkExtent3D maxExtent;
uint32_t maxMipLevels;
- uint32_t maxArraySize;
+ uint32_t maxArrayLayers;
VkSampleCountFlags sampleCounts;
VkDeviceSize maxResourceSize;
} VkImageFormatProperties;
@@ -1512,9 +1512,9 @@
typedef struct {
VkImageAspectFlags aspectMask;
uint32_t baseMipLevel;
- uint32_t mipLevels;
+ uint32_t numLevels;
uint32_t baseArrayLayer;
- uint32_t arraySize;
+ uint32_t numLayers;
} VkImageSubresourceRange;
typedef struct {
@@ -1952,8 +1952,8 @@
typedef struct {
VkImageAspectFlags aspect;
uint32_t mipLevel;
- uint32_t arrayLayer;
- uint32_t arraySize;
+ uint32_t baseArrayLayer;
+ uint32_t numLayers;
} VkImageSubresourceCopy;
typedef struct {
diff --git a/layers/image.cpp b/layers/image.cpp
index e40536a..a49ded8 100644
--- a/layers/image.cpp
+++ b/layers/image.cpp
@@ -400,12 +400,12 @@
ss << "vkCreateImageView called with baseArrayLayer " << pCreateInfo->subresourceRange.baseArrayLayer << " for image " << pCreateInfo->image.handle << " that only has " << imageEntry->second->arraySize << " mip levels.";
skipCall |= log_msg(device_data->report_data, VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, IMAGE_VIEW_CREATE_ERROR, "IMAGE", ss.str().c_str());
}
- if (!pCreateInfo->subresourceRange.mipLevels) {
+ if (!pCreateInfo->subresourceRange.numLevels) {
std::stringstream ss;
ss << "vkCreateImageView called with 0 in pCreateInfo->subresourceRange.mipLevels.";
skipCall |= log_msg(device_data->report_data, VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, IMAGE_VIEW_CREATE_ERROR, "IMAGE", ss.str().c_str());
}
- if (!pCreateInfo->subresourceRange.arraySize) {
+ if (!pCreateInfo->subresourceRange.numLayers) {
std::stringstream ss;
ss << "vkCreateImageView called with 0 in pCreateInfo->subresourceRange.arraySize.";
skipCall |= log_msg(device_data->report_data, VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, IMAGE_VIEW_CREATE_ERROR, "IMAGE", ss.str().c_str());
diff --git a/tests/blit_tests.cpp b/tests/blit_tests.cpp
index e11c108..a1abc8c 100644
--- a/tests/blit_tests.cpp
+++ b/tests/blit_tests.cpp
@@ -94,7 +94,7 @@
region.bufferOffset = offset;
region.imageSubresource.mipLevel = lv;
- region.imageSubresource.arrayLayer = 0;
+ region.imageSubresource.baseArrayLayer = 0;
region.imageExtent = Image::extent(info_.extent, lv);
if (info_.usage & VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT) {
@@ -130,7 +130,7 @@
VkBufferImageCopy region = regions_[i];
region.bufferOffset += slice_pitch * slice;
- region.imageSubresource.arrayLayer = slice;
+ region.imageSubresource.baseArrayLayer = slice;
regions_.push_back(region);
}
}
@@ -143,8 +143,8 @@
VkDeviceSize offset = 0;
for (std::vector<VkImageSubresourceRange>::const_iterator it = ranges.begin();
it != ranges.end(); it++) {
- for (uint32_t lv = 0; lv < it->mipLevels; lv++) {
- for (uint32_t layer = 0; layer < it->arraySize; layer++) {
+ for (uint32_t lv = 0; lv < it->numLevels; lv++) {
+ for (uint32_t layer = 0; layer < it->numLayers; layer++) {
VkBufferImageCopy region = {};
region.bufferOffset = offset;
region.imageSubresource = Image::subresource(*it, lv, layer, 1);
@@ -276,7 +276,7 @@
const unsigned char input[] = {
HASH_BYTES(hash_salt_),
HASH_BYTES(subres.mipLevel),
- HASH_BYTES(subres.arrayLayer),
+ HASH_BYTES(subres.baseArrayLayer),
HASH_BYTES(offset.x),
HASH_BYTES(offset.y),
HASH_BYTES(offset.z),
diff --git a/tests/image_tests.cpp b/tests/image_tests.cpp
index be4e012..6fd07b4 100644
--- a/tests/image_tests.cpp
+++ b/tests/image_tests.cpp
@@ -290,9 +290,9 @@
viewInfo.channels.a = VK_CHANNEL_SWIZZLE_A;
viewInfo.subresourceRange.baseArrayLayer = 0;
- viewInfo.subresourceRange.arraySize = 1;
+ viewInfo.subresourceRange.numLayers = 1;
viewInfo.subresourceRange.baseMipLevel = 0;
- viewInfo.subresourceRange.mipLevels = 1;
+ viewInfo.subresourceRange.numLevels = 1;
viewInfo.subresourceRange.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT;
// VkResult VKAPI vkCreateImageView(
diff --git a/tests/init.cpp b/tests/init.cpp
index 472b230..e5b18d8 100644
--- a/tests/init.cpp
+++ b/tests/init.cpp
@@ -456,9 +456,9 @@
viewInfo.channels.a = VK_CHANNEL_SWIZZLE_A;
viewInfo.subresourceRange.baseArrayLayer = 0;
- viewInfo.subresourceRange.arraySize = 1;
+ viewInfo.subresourceRange.numLayers = 1;
viewInfo.subresourceRange.baseMipLevel = 0;
- viewInfo.subresourceRange.mipLevels = 1;
+ viewInfo.subresourceRange.numLevels = 1;
viewInfo.subresourceRange.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT;
// VkResult VKAPI vkCreateImageView(
diff --git a/tests/layer_validation_tests.cpp b/tests/layer_validation_tests.cpp
index 897134b..6ee949a 100644
--- a/tests/layer_validation_tests.cpp
+++ b/tests/layer_validation_tests.cpp
@@ -4343,9 +4343,9 @@
image_view_create_info.image = image;
image_view_create_info.viewType = VK_IMAGE_VIEW_TYPE_2D;
image_view_create_info.format = tex_format;
- image_view_create_info.subresourceRange.arraySize = 1;
+ image_view_create_info.subresourceRange.numLayers = 1;
image_view_create_info.subresourceRange.baseMipLevel = 10; // cause an error
- image_view_create_info.subresourceRange.mipLevels = 1;
+ image_view_create_info.subresourceRange.numLevels = 1;
VkImageView view;
err = vkCreateImageView(m_device->device(), &image_view_create_info, &view);
@@ -4428,15 +4428,15 @@
VkImageCopy copyRegion;
copyRegion.srcSubresource.aspect = VK_IMAGE_ASPECT_COLOR_BIT;
copyRegion.srcSubresource.mipLevel = 0;
- copyRegion.srcSubresource.arrayLayer = 0;
- copyRegion.srcSubresource.arraySize = 0;
+ copyRegion.srcSubresource.baseArrayLayer = 0;
+ copyRegion.srcSubresource.numLayers = 0;
copyRegion.srcOffset.x = 0;
copyRegion.srcOffset.y = 0;
copyRegion.srcOffset.z = 0;
copyRegion.destSubresource.aspect = VK_IMAGE_ASPECT_COLOR_BIT;
copyRegion.destSubresource.mipLevel = 0;
- copyRegion.destSubresource.arrayLayer = 0;
- copyRegion.destSubresource.arraySize = 0;
+ copyRegion.destSubresource.baseArrayLayer = 0;
+ copyRegion.destSubresource.numLayers = 0;
copyRegion.destOffset.x = 0;
copyRegion.destOffset.y = 0;
copyRegion.destOffset.z = 0;
@@ -4534,15 +4534,15 @@
VkImageCopy copyRegion;
copyRegion.srcSubresource.aspect = VK_IMAGE_ASPECT_COLOR_BIT;
copyRegion.srcSubresource.mipLevel = 0;
- copyRegion.srcSubresource.arrayLayer = 0;
- copyRegion.srcSubresource.arraySize = 0;
+ copyRegion.srcSubresource.baseArrayLayer = 0;
+ copyRegion.srcSubresource.numLayers = 0;
copyRegion.srcOffset.x = 0;
copyRegion.srcOffset.y = 0;
copyRegion.srcOffset.z = 0;
copyRegion.destSubresource.aspect = VK_IMAGE_ASPECT_COLOR_BIT;
copyRegion.destSubresource.mipLevel = 0;
- copyRegion.destSubresource.arrayLayer = 0;
- copyRegion.destSubresource.arraySize = 0;
+ copyRegion.destSubresource.baseArrayLayer = 0;
+ copyRegion.destSubresource.numLayers = 0;
copyRegion.destOffset.x = 0;
copyRegion.destOffset.y = 0;
copyRegion.destOffset.z = 0;
@@ -4638,15 +4638,15 @@
VkImageResolve resolveRegion;
resolveRegion.srcSubresource.aspect = VK_IMAGE_ASPECT_COLOR_BIT;
resolveRegion.srcSubresource.mipLevel = 0;
- resolveRegion.srcSubresource.arrayLayer = 0;
- resolveRegion.srcSubresource.arraySize = 0;
+ resolveRegion.srcSubresource.baseArrayLayer = 0;
+ resolveRegion.srcSubresource.numLayers = 0;
resolveRegion.srcOffset.x = 0;
resolveRegion.srcOffset.y = 0;
resolveRegion.srcOffset.z = 0;
resolveRegion.destSubresource.aspect = VK_IMAGE_ASPECT_COLOR_BIT;
resolveRegion.destSubresource.mipLevel = 0;
- resolveRegion.destSubresource.arrayLayer = 0;
- resolveRegion.destSubresource.arraySize = 0;
+ resolveRegion.destSubresource.baseArrayLayer = 0;
+ resolveRegion.destSubresource.numLayers = 0;
resolveRegion.destOffset.x = 0;
resolveRegion.destOffset.y = 0;
resolveRegion.destOffset.z = 0;
@@ -4742,15 +4742,15 @@
VkImageResolve resolveRegion;
resolveRegion.srcSubresource.aspect = VK_IMAGE_ASPECT_COLOR_BIT;
resolveRegion.srcSubresource.mipLevel = 0;
- resolveRegion.srcSubresource.arrayLayer = 0;
- resolveRegion.srcSubresource.arraySize = 0;
+ resolveRegion.srcSubresource.baseArrayLayer = 0;
+ resolveRegion.srcSubresource.numLayers = 0;
resolveRegion.srcOffset.x = 0;
resolveRegion.srcOffset.y = 0;
resolveRegion.srcOffset.z = 0;
resolveRegion.destSubresource.aspect = VK_IMAGE_ASPECT_COLOR_BIT;
resolveRegion.destSubresource.mipLevel = 0;
- resolveRegion.destSubresource.arrayLayer = 0;
- resolveRegion.destSubresource.arraySize = 0;
+ resolveRegion.destSubresource.baseArrayLayer = 0;
+ resolveRegion.destSubresource.numLayers = 0;
resolveRegion.destOffset.x = 0;
resolveRegion.destOffset.y = 0;
resolveRegion.destOffset.z = 0;
@@ -4847,15 +4847,15 @@
VkImageResolve resolveRegion;
resolveRegion.srcSubresource.aspect = VK_IMAGE_ASPECT_COLOR_BIT;
resolveRegion.srcSubresource.mipLevel = 0;
- resolveRegion.srcSubresource.arrayLayer = 0;
- resolveRegion.srcSubresource.arraySize = 0;
+ resolveRegion.srcSubresource.baseArrayLayer = 0;
+ resolveRegion.srcSubresource.numLayers = 0;
resolveRegion.srcOffset.x = 0;
resolveRegion.srcOffset.y = 0;
resolveRegion.srcOffset.z = 0;
resolveRegion.destSubresource.aspect = VK_IMAGE_ASPECT_COLOR_BIT;
resolveRegion.destSubresource.mipLevel = 0;
- resolveRegion.destSubresource.arrayLayer = 0;
- resolveRegion.destSubresource.arraySize = 0;
+ resolveRegion.destSubresource.baseArrayLayer = 0;
+ resolveRegion.destSubresource.numLayers = 0;
resolveRegion.destOffset.x = 0;
resolveRegion.destOffset.y = 0;
resolveRegion.destOffset.z = 0;
@@ -4952,15 +4952,15 @@
VkImageResolve resolveRegion;
resolveRegion.srcSubresource.aspect = VK_IMAGE_ASPECT_COLOR_BIT;
resolveRegion.srcSubresource.mipLevel = 0;
- resolveRegion.srcSubresource.arrayLayer = 0;
- resolveRegion.srcSubresource.arraySize = 0;
+ resolveRegion.srcSubresource.baseArrayLayer = 0;
+ resolveRegion.srcSubresource.numLayers = 0;
resolveRegion.srcOffset.x = 0;
resolveRegion.srcOffset.y = 0;
resolveRegion.srcOffset.z = 0;
resolveRegion.destSubresource.aspect = VK_IMAGE_ASPECT_COLOR_BIT;
resolveRegion.destSubresource.mipLevel = 0;
- resolveRegion.destSubresource.arrayLayer = 0;
- resolveRegion.destSubresource.arraySize = 0;
+ resolveRegion.destSubresource.baseArrayLayer = 0;
+ resolveRegion.destSubresource.numLayers = 0;
resolveRegion.destOffset.x = 0;
resolveRegion.destOffset.y = 0;
resolveRegion.destOffset.z = 0;
diff --git a/tests/vkrenderframework.cpp b/tests/vkrenderframework.cpp
index 0b77e65..2876d45 100644
--- a/tests/vkrenderframework.cpp
+++ b/tests/vkrenderframework.cpp
@@ -764,13 +764,13 @@
VkImageCopy copy_region = {};
copy_region.srcSubresource.aspect = VK_IMAGE_ASPECT_COLOR_BIT;
- copy_region.srcSubresource.arrayLayer = 0;
+ copy_region.srcSubresource.baseArrayLayer = 0;
copy_region.srcSubresource.mipLevel = 0;
copy_region.srcOffset.x = 0;
copy_region.srcOffset.y = 0;
copy_region.srcOffset.z = 0;
copy_region.destSubresource.aspect = VK_IMAGE_ASPECT_COLOR_BIT;
- copy_region.destSubresource.arrayLayer = 0;
+ copy_region.destSubresource.baseArrayLayer = 0;
copy_region.destSubresource.mipLevel = 0;
copy_region.destOffset.x = 0;
copy_region.destOffset.y = 0;
@@ -825,9 +825,9 @@
view.channels.a = VK_CHANNEL_SWIZZLE_A;
view.subresourceRange.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT;
view.subresourceRange.baseMipLevel = 0;
- view.subresourceRange.mipLevels = 1;
+ view.subresourceRange.numLevels = 1;
view.subresourceRange.baseArrayLayer = 0;
- view.subresourceRange.arraySize = 1;
+ view.subresourceRange.numLayers = 1;
/* create image */
init(16, 16, tex_format, VK_IMAGE_USAGE_SAMPLED_BIT | VK_IMAGE_USAGE_TRANSFER_DESTINATION_BIT, VK_IMAGE_TILING_OPTIMAL);
@@ -1387,9 +1387,9 @@
VkImageSubresourceRange srRange = {};
srRange.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT;
srRange.baseMipLevel = 0;
- srRange.mipLevels = VK_REMAINING_MIP_LEVELS;
+ srRange.numLevels = VK_REMAINING_MIP_LEVELS;
srRange.baseArrayLayer = 0;
- srRange.arraySize = VK_REMAINING_ARRAY_LAYERS;
+ srRange.numLayers = VK_REMAINING_ARRAY_LAYERS;
VkImageMemoryBarrier memory_barrier = {};
memory_barrier.sType = VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER;
@@ -1419,9 +1419,9 @@
VkImageSubresourceRange dsRange = {};
dsRange.aspectMask = VK_IMAGE_ASPECT_DEPTH_BIT;
dsRange.baseMipLevel = 0;
- dsRange.mipLevels = VK_REMAINING_MIP_LEVELS;
+ dsRange.numLevels = VK_REMAINING_MIP_LEVELS;
dsRange.baseArrayLayer = 0;
- dsRange.arraySize = VK_REMAINING_ARRAY_LAYERS;
+ dsRange.numLayers = VK_REMAINING_ARRAY_LAYERS;
// prepare the depth buffer for clear
@@ -1493,9 +1493,9 @@
VkImageSubresourceRange srRange = {};
srRange.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT;
srRange.baseMipLevel = 0;
- srRange.mipLevels = VK_REMAINING_MIP_LEVELS;
+ srRange.numLevels = VK_REMAINING_MIP_LEVELS;
srRange.baseArrayLayer = 0;
- srRange.arraySize = VK_REMAINING_ARRAY_LAYERS;
+ srRange.numLayers = VK_REMAINING_ARRAY_LAYERS;
VkImageMemoryBarrier memory_barrier = {};
memory_barrier.sType = VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER;
@@ -1703,9 +1703,9 @@
view_info.image = VK_NULL_HANDLE;
view_info.subresourceRange.aspectMask = VK_IMAGE_ASPECT_DEPTH_BIT;
view_info.subresourceRange.baseMipLevel = 0;
- view_info.subresourceRange.mipLevels = 1;
+ view_info.subresourceRange.numLevels = 1;
view_info.subresourceRange.baseArrayLayer = 0;
- view_info.subresourceRange.arraySize = 1;
+ view_info.subresourceRange.numLayers = 1;
view_info.flags = 0;
view_info.format = m_depth_stencil_fmt;
view_info.image = handle();
diff --git a/tests/vktestbinding.cpp b/tests/vktestbinding.cpp
index 34f53c1..b1f6b66 100644
--- a/tests/vktestbinding.cpp
+++ b/tests/vktestbinding.cpp
@@ -610,7 +610,7 @@
VkSubresourceLayout Image::subresource_layout(const VkImageSubresourceCopy &subrescopy) const
{
VkSubresourceLayout data;
- VkImageSubresource subres = subresource(image_aspect(subrescopy.aspect), subrescopy.mipLevel, subrescopy.arrayLayer);
+ VkImageSubresource subres = subresource(image_aspect(subrescopy.aspect), subrescopy.mipLevel, subrescopy.baseArrayLayer);
size_t size = sizeof(data);
vkGetImageSubresourceLayout(device(), handle(), &subres, &data);
if (size != sizeof(data))
diff --git a/tests/vktestbinding.h b/tests/vktestbinding.h
index f2ef822..09d8109 100644
--- a/tests/vktestbinding.h
+++ b/tests/vktestbinding.h
@@ -421,7 +421,7 @@
static VkImageSubresourceCopy subresource(VkImageAspectFlagBits aspect, uint32_t mip_level, uint32_t array_layer, uint32_t array_size);
static VkImageSubresourceCopy subresource(const VkImageSubresourceRange &range, uint32_t mip_level, uint32_t array_layer, uint32_t array_size);
static VkImageSubresourceRange subresource_range(VkImageAspectFlags aspect_mask, uint32_t base_mip_level, uint32_t mip_levels,
- uint32_t base_array_layer, uint32_t array_size);
+ uint32_t base_array_layer, uint32_t num_layers);
static VkImageSubresourceRange subresource_range(const VkImageCreateInfo &info, VkImageAspectFlags aspect_mask);
static VkImageSubresourceRange subresource_range(const VkImageSubresource &subres);
@@ -693,8 +693,8 @@
VkImageSubresourceCopy subres = {};
subres.aspect = aspect;
subres.mipLevel = mip_level;
- subres.arrayLayer = array_layer;
- subres.arraySize = array_size;
+ subres.baseArrayLayer = array_layer;
+ subres.numLayers = array_size;
return subres;
}
@@ -725,14 +725,14 @@
}
inline VkImageSubresourceRange Image::subresource_range(VkImageAspectFlags aspect_mask, uint32_t base_mip_level, uint32_t mip_levels,
- uint32_t base_array_layer, uint32_t array_size)
+ uint32_t base_array_layer, uint32_t num_layers)
{
VkImageSubresourceRange range = {};
range.aspectMask = aspect_mask;
range.baseMipLevel = base_mip_level;
- range.mipLevels = mip_levels;
+ range.numLevels = mip_levels;
range.baseArrayLayer = base_array_layer;
- range.arraySize = array_size;
+ range.numLayers = num_layers;
return range;
}
diff --git a/tests/vktestframework.cpp b/tests/vktestframework.cpp
index e61efb8..d960580 100644
--- a/tests/vktestframework.cpp
+++ b/tests/vktestframework.cpp
@@ -559,9 +559,9 @@
memoryBarrier.destQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED;
memoryBarrier.subresourceRange.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT;
memoryBarrier.subresourceRange.baseMipLevel = 0;
- memoryBarrier.subresourceRange.mipLevels = 1;
+ memoryBarrier.subresourceRange.numLevels = 1;
memoryBarrier.subresourceRange.baseArrayLayer = 0;
- memoryBarrier.subresourceRange.arraySize = 1;
+ memoryBarrier.subresourceRange.numLayers = 1;
memoryBarrier.image = m_buffers[m_current_buffer].image;
VkImageMemoryBarrier *pmemory_barrier = &memoryBarrier;
vkCmdPipelineBarrier(m_cmdbuf.handle(), VK_PIPELINE_STAGE_ALL_GPU_COMMANDS, VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT,
@@ -957,9 +957,9 @@
color_image_view.format = m_format;
color_image_view.subresourceRange.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT;
color_image_view.subresourceRange.baseMipLevel = 0;
- color_image_view.subresourceRange.mipLevels = 1;
+ color_image_view.subresourceRange.numLevels = 1;
color_image_view.subresourceRange.baseArrayLayer = 0;
- color_image_view.subresourceRange.arraySize = 1;
+ color_image_view.subresourceRange.numLayers = 1;
m_buffers[i].image = swapchainImages[i];
@@ -1002,9 +1002,9 @@
image_memory_barrier.image = image;
image_memory_barrier.subresourceRange.aspectMask = aspectMask;
image_memory_barrier.subresourceRange.baseMipLevel = 0;
- image_memory_barrier.subresourceRange.mipLevels = 1;
+ image_memory_barrier.subresourceRange.numLevels = 1;
image_memory_barrier.subresourceRange.baseArrayLayer = 0;
- image_memory_barrier.subresourceRange.arraySize = 1;
+ image_memory_barrier.subresourceRange.numLayers = 1;
if (new_image_layout == VK_IMAGE_LAYOUT_TRANSFER_DESTINATION_OPTIMAL) {
/* Make sure anything that was copying from this image has completed */