aboutsummaryrefslogtreecommitdiff
path: root/layers/descriptor_sets.cpp
diff options
context:
space:
mode:
authorTobin Ehlis <tobine@google.com>2016-09-14 08:02:49 -0600
committerTobin Ehlis <tobine@google.com>2016-09-22 07:21:24 -0600
commitc30003c040c09cb29506cd552254230cdc375844 (patch)
treefc7efd8c8a1a9684621424f0eeb3153ad6f0731a /layers/descriptor_sets.cpp
parent4ae43846ff6c5ed39953bdae1470dae19708a08f (diff)
downloadusermoji-c30003c040c09cb29506cd552254230cdc375844.tar.xz
layers: Update ImageView state tracking
Create IMAGE_VIEW_STATE class to hold VkImageViewCreateInfo and update related state tracking. This class derives from BASE_NODE in preparation for tracking in_use for ImageViews consistent to other object in_use tracking.
Diffstat (limited to 'layers/descriptor_sets.cpp')
-rw-r--r--layers/descriptor_sets.cpp31
1 files changed, 16 insertions, 15 deletions
diff --git a/layers/descriptor_sets.cpp b/layers/descriptor_sets.cpp
index 9b20638b..79d9c286 100644
--- a/layers/descriptor_sets.cpp
+++ b/layers/descriptor_sets.cpp
@@ -431,20 +431,21 @@ bool cvdescriptorset::DescriptorSet::ValidateDrawState(const std::map<uint32_t,
: static_cast<ImageDescriptor *>(descriptors_[i].get())->GetImageView();
auto reqs = binding_pair.second;
- auto image_view_data = getImageViewData(device_data_, image_view);
- assert(image_view_data);
+ auto image_view_state = getImageViewState(device_data_, image_view);
+ assert(image_view_state);
+ auto image_view_ci = image_view_state->create_info;
- if ((reqs & DESCRIPTOR_REQ_ALL_VIEW_TYPE_BITS) && (~reqs & (1 << image_view_data->viewType))) {
+ if ((reqs & DESCRIPTOR_REQ_ALL_VIEW_TYPE_BITS) && (~reqs & (1 << image_view_ci.viewType))) {
// bad view type
std::stringstream error_str;
error_str << "Descriptor in binding #" << binding << " at global descriptor index " << i
<< " requires an image view of type " << string_descriptor_req_view_type(reqs)
- << " but got " << string_VkImageViewType(image_view_data->viewType) << ".";
+ << " but got " << string_VkImageViewType(image_view_ci.viewType) << ".";
*error = error_str.str();
return false;
}
- auto image_node = getImageNode(device_data_, image_view_data->image);
+ auto image_node = getImageNode(device_data_, image_view_ci.image);
assert(image_node);
if ((reqs & DESCRIPTOR_REQ_SINGLE_SAMPLE) &&
@@ -670,8 +671,8 @@ bool cvdescriptorset::ValidateSampler(const VkSampler sampler, const core_valida
bool cvdescriptorset::ValidateImageUpdate(VkImageView image_view, VkImageLayout image_layout, VkDescriptorType type,
const core_validation::layer_data *dev_data,
std::string *error) {
- auto iv_data = getImageViewData(dev_data, image_view);
- if (!iv_data) {
+ auto iv_state = getImageViewState(dev_data, image_view);
+ if (!iv_state) {
std::stringstream error_str;
error_str << "Invalid VkImageView: " << image_view;
*error = error_str.str();
@@ -680,8 +681,8 @@ bool cvdescriptorset::ValidateImageUpdate(VkImageView image_view, VkImageLayout
// Note that when an imageview is created, we validated that memory is bound so no need to re-check here
// Validate that imageLayout is compatible with aspect_mask and image format
// and validate that image usage bits are correct for given usage
- VkImageAspectFlags aspect_mask = iv_data->subresourceRange.aspectMask;
- VkImage image = iv_data->image;
+ VkImageAspectFlags aspect_mask = iv_state->create_info.subresourceRange.aspectMask;
+ VkImage image = iv_state->create_info.image;
VkFormat format = VK_FORMAT_MAX_ENUM;
VkImageUsageFlags usage = 0;
auto image_node = getImageNode(dev_data, image);
@@ -877,9 +878,9 @@ void cvdescriptorset::ImageSamplerDescriptor::BindCommandBuffer(const core_valid
core_validation::AddCommandBufferBindingSampler(cb_node, sampler_node);
}
// Add binding for image
- auto iv_data = getImageViewData(dev_data, image_view_);
- if (iv_data) {
- auto image_node = getImageNode(dev_data, iv_data->image);
+ auto iv_state = getImageViewState(dev_data, image_view_);
+ if (iv_state) {
+ auto image_node = getImageNode(dev_data, iv_state->create_info.image);
if (image_node)
core_validation::AddCommandBufferBindingImage(dev_data, cb_node, image_node);
}
@@ -910,9 +911,9 @@ void cvdescriptorset::ImageDescriptor::CopyUpdate(const Descriptor *src) {
void cvdescriptorset::ImageDescriptor::BindCommandBuffer(const core_validation::layer_data *dev_data, GLOBAL_CB_NODE *cb_node) {
// Add binding for image
- auto iv_data = getImageViewData(dev_data, image_view_);
- if (iv_data) {
- auto image_node = getImageNode(dev_data, iv_data->image);
+ auto iv_state = getImageViewState(dev_data, image_view_);
+ if (iv_state) {
+ auto image_node = getImageNode(dev_data, iv_state->create_info.image);
if (image_node)
core_validation::AddCommandBufferBindingImage(dev_data, cb_node, image_node);
}