Bug 14522: Remove VkAttachmentView
https://cvs.khronos.org/bugzilla/show_bug.cgi?id=14522
Several parts of the driver really want an attachment view
so I've included the attachment information in the
intel_img_view structure and initialize both when the
view is created.
Parts of the meta path only need intel_att_view and
I kept that in place.
diff --git a/tests/vkrenderframework.cpp b/tests/vkrenderframework.cpp
index 2eed8d8..b530d1f 100644
--- a/tests/vkrenderframework.cpp
+++ b/tests/vkrenderframework.cpp
@@ -173,7 +173,7 @@
vkDestroyDynamicViewportState(device(), m_stateViewport);
}
while (!m_renderTargets.empty()) {
- vkDestroyAttachmentView(device(), m_renderTargets.back()->targetView(m_render_target_fmt));
+ vkDestroyImageView(device(), m_renderTargets.back()->targetView(m_render_target_fmt));
vkDestroyImage(device(), m_renderTargets.back()->image());
vkFreeMemory(device(), m_renderTargets.back()->memory());
m_renderTargets.pop_back();
@@ -307,16 +307,16 @@
InitRenderTarget(targets, NULL);
}
-void VkRenderFramework::InitRenderTarget(VkAttachmentView *dsBinding)
+void VkRenderFramework::InitRenderTarget(VkImageView *dsBinding)
{
InitRenderTarget(1, dsBinding);
}
-void VkRenderFramework::InitRenderTarget(uint32_t targets, VkAttachmentView *dsBinding)
+void VkRenderFramework::InitRenderTarget(uint32_t targets, VkImageView *dsBinding)
{
std::vector<VkAttachmentDescription> attachments;
std::vector<VkAttachmentReference> color_references;
- std::vector<VkAttachmentView> bindings;
+ std::vector<VkImageView> bindings;
attachments.reserve(targets + 1); // +1 for dsBinding
color_references.reserve(targets);
bindings.reserve(targets + 1); // +1 for dsBinding
@@ -340,7 +340,7 @@
VkClearValue clear = {};
clear.color = m_clear_color;
- VkAttachmentView bind = {};
+ VkImageView bind = {};
for (uint32_t i = 0; i < targets; i++) {
attachments.push_back(att);
@@ -1576,7 +1576,7 @@
return m_initialized;
}
-VkAttachmentView* VkDepthStencilObj::BindInfo()
+VkImageView* VkDepthStencilObj::BindInfo()
{
return &m_attachmentBindInfo;
}
@@ -1584,7 +1584,7 @@
void VkDepthStencilObj::Init(VkDeviceObj *device, int32_t width, int32_t height, VkFormat format)
{
VkImageCreateInfo image_info;
- VkAttachmentViewCreateInfo view_info;
+ VkImageViewCreateInfo view_info;
m_device = device;
m_initialized = true;
@@ -1608,16 +1608,18 @@
image_info.pQueueFamilyIndices = NULL;
init(*m_device, image_info);
- view_info.sType = VK_STRUCTURE_TYPE_ATTACHMENT_VIEW_CREATE_INFO;
+ view_info.sType = VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO;
view_info.pNext = NULL;
view_info.image = VK_NULL_HANDLE;
- view_info.mipLevel = 0;
- view_info.baseArraySlice = 0;
- view_info.arraySize = 1;
+ view_info.subresourceRange.aspect = VK_IMAGE_ASPECT_DEPTH;
+ view_info.subresourceRange.baseMipLevel = 0;
+ view_info.subresourceRange.mipLevels = 1;
+ view_info.subresourceRange.baseArraySlice = 0;
+ view_info.subresourceRange.arraySize = 1;
view_info.flags = 0;
view_info.format = m_depth_stencil_fmt;
view_info.image = handle();
- m_attachmentView.init(*m_device, view_info);
+ m_imageView.init(*m_device, view_info);
- m_attachmentBindInfo = m_attachmentView.handle();
+ m_attachmentBindInfo = m_imageView.handle();
}
diff --git a/tests/vkrenderframework.h b/tests/vkrenderframework.h
index a50fab9..f0f5c11 100644
--- a/tests/vkrenderframework.h
+++ b/tests/vkrenderframework.h
@@ -57,14 +57,14 @@
VkDepthStencilObj();
void Init(VkDeviceObj *device, int32_t width, int32_t height, VkFormat format);
bool Initialized();
- VkAttachmentView* BindInfo();
+ VkImageView* BindInfo();
protected:
VkDeviceObj *m_device;
bool m_initialized;
- vk_testing::AttachmentView m_attachmentView;
+ vk_testing::ImageView m_imageView;
VkFormat m_depth_stencil_fmt;
- VkAttachmentView m_attachmentBindInfo;
+ VkImageView m_attachmentBindInfo;
};
class VkCommandBufferObj;
@@ -84,8 +84,8 @@
void InitViewport();
void InitRenderTarget();
void InitRenderTarget(uint32_t targets);
- void InitRenderTarget(VkAttachmentView *dsBinding);
- void InitRenderTarget(uint32_t targets, VkAttachmentView *dsBinding);
+ void InitRenderTarget(VkImageView *dsBinding);
+ void InitRenderTarget(uint32_t targets, VkImageView *dsBinding);
void InitFramework();
void InitFramework(
std::vector<const char *> instance_layer_names,
@@ -292,19 +292,21 @@
return handle();
}
- VkAttachmentView targetView(VkFormat format)
+ VkImageView targetView(VkFormat format)
{
if (!m_targetView.initialized())
{
- VkAttachmentViewCreateInfo createView = {
- VK_STRUCTURE_TYPE_ATTACHMENT_VIEW_CREATE_INFO,
- VK_NULL_HANDLE,
- handle(),
- format,
- 0,
- 0,
- 1
- };
+ VkImageViewCreateInfo createView = {};
+ createView.sType = VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO;
+ createView.image = handle();
+ createView.viewType = VK_IMAGE_VIEW_TYPE_2D;
+ createView.format = format;
+ createView.channels.r = VK_CHANNEL_SWIZZLE_R;
+ createView.channels.g = VK_CHANNEL_SWIZZLE_G;
+ createView.channels.b = VK_CHANNEL_SWIZZLE_B;
+ createView.channels.a = VK_CHANNEL_SWIZZLE_A;
+ createView.subresourceRange = {VK_IMAGE_ASPECT_COLOR, 0, 1, 0, 1};
+ createView.flags = 0;
m_targetView.init(*m_device, createView);
}
return m_targetView.handle();
@@ -333,7 +335,7 @@
protected:
VkDeviceObj *m_device;
- vk_testing::AttachmentView m_targetView;
+ vk_testing::ImageView m_targetView;
VkDescriptorInfo m_descriptorInfo;
};
diff --git a/tests/vktestbinding.cpp b/tests/vktestbinding.cpp
index 6705073..f5ee736 100644
--- a/tests/vktestbinding.cpp
+++ b/tests/vktestbinding.cpp
@@ -618,13 +618,6 @@
NON_DISPATCHABLE_HANDLE_INIT(vkCreateImageView, dev, &info);
}
-NON_DISPATCHABLE_HANDLE_DTOR(AttachmentView, vkDestroyAttachmentView)
-
-void AttachmentView::init(const Device &dev, const VkAttachmentViewCreateInfo &info)
-{
- NON_DISPATCHABLE_HANDLE_INIT(vkCreateAttachmentView, dev, &info);
-}
-
NON_DISPATCHABLE_HANDLE_DTOR(ShaderModule, vkDestroyShaderModule)
void ShaderModule::init(const Device &dev, const VkShaderModuleCreateInfo &info)
diff --git a/tests/vktestbinding.h b/tests/vktestbinding.h
index b27198f..57717d5 100644
--- a/tests/vktestbinding.h
+++ b/tests/vktestbinding.h
@@ -45,7 +45,6 @@
class BufferView;
class Image;
class ImageView;
-class ColorAttachmentView;
class DepthStencilView;
class Shader;
class Pipeline;
@@ -448,15 +447,6 @@
void init(const Device &dev, const VkImageViewCreateInfo &info);
};
-//class AttachmentView : public DerivedObject<VkAttachmentView, Object, VK_OBJECT_TYPE_ATTACHMENT_VIEW> {
-class AttachmentView : public internal::NonDispHandle<VkAttachmentView> {
-public:
- ~AttachmentView();
-
- // vkCreateAttachmentView()
- void init(const Device &dev, const VkAttachmentViewCreateInfo &info);
-};
-
class ShaderModule : public internal::NonDispHandle<VkShaderModule> {
public:
~ShaderModule();
diff --git a/tests/vktestframework.cpp b/tests/vktestframework.cpp
index 73dd66d..fc1f163 100644
--- a/tests/vktestframework.cpp
+++ b/tests/vktestframework.cpp
@@ -90,7 +90,7 @@
typedef struct _SwapChainBuffers {
VkImage image;
VkCmdBuffer cmd;
- VkAttachmentView view;
+ VkImageView view;
} SwapChainBuffers;
class TestFrameworkVkPresent
@@ -915,19 +915,21 @@
assert(m_buffers);
for (i = 0; i < m_swapChainImageCount; i++) {
- VkAttachmentViewCreateInfo color_attachment_view = {};
- color_attachment_view.sType = VK_STRUCTURE_TYPE_ATTACHMENT_VIEW_CREATE_INFO;
- color_attachment_view.pNext = NULL;
- color_attachment_view.format = m_format;
- color_attachment_view.mipLevel = 0;
- color_attachment_view.baseArraySlice = 0;
- color_attachment_view.arraySize = 1;
+ VkImageViewCreateInfo color_image_view = {};
+ color_image_view.sType = VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO;
+ color_image_view.pNext = NULL;
+ color_image_view.format = m_format;
+ color_image_view.subresourceRange.aspect = VK_IMAGE_ASPECT_DEPTH;
+ color_image_view.subresourceRange.baseMipLevel = 0;
+ color_image_view.subresourceRange.mipLevels = 1;
+ color_image_view.subresourceRange.baseArraySlice = 0;
+ color_image_view.subresourceRange.arraySize = 1;
m_buffers[i].image = swapChainImages[i];
- color_attachment_view.image = m_buffers[i].image;
- err = vkCreateAttachmentView(m_device.handle(),
- &color_attachment_view, &m_buffers[i].view);
+ color_image_view.image = m_buffers[i].image;
+ err = vkCreateImageView(m_device.handle(),
+ &color_image_view, &m_buffers[i].view);
assert(!err);
}
}