diff options
| author | Tobin Ehlis <tobine@google.com> | 2016-09-14 08:02:49 -0600 |
|---|---|---|
| committer | Tobin Ehlis <tobine@google.com> | 2016-09-22 07:21:24 -0600 |
| commit | c30003c040c09cb29506cd552254230cdc375844 (patch) | |
| tree | fc7efd8c8a1a9684621424f0eeb3153ad6f0731a /layers/descriptor_sets.cpp | |
| parent | 4ae43846ff6c5ed39953bdae1470dae19708a08f (diff) | |
| download | usermoji-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.cpp | 31 |
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); } |
