[dxvk] Added component mapping to image view info

This commit is contained in:
Philip Rebohle 2017-12-10 20:06:07 +01:00
parent 9acc9bf3e0
commit 5739e2f60f
2 changed files with 17 additions and 14 deletions

View File

@ -63,12 +63,6 @@ namespace dxvk {
const Rc<DxvkImage>& image,
const DxvkImageViewCreateInfo& info)
: m_vkd(vkd), m_image(image), m_info(info) {
VkComponentMapping componentMapping;
componentMapping.r = VK_COMPONENT_SWIZZLE_IDENTITY;
componentMapping.g = VK_COMPONENT_SWIZZLE_IDENTITY;
componentMapping.b = VK_COMPONENT_SWIZZLE_IDENTITY;
componentMapping.a = VK_COMPONENT_SWIZZLE_IDENTITY;
VkImageSubresourceRange subresourceRange;
subresourceRange.aspectMask = info.aspect;
subresourceRange.baseMipLevel = info.minLevel;
@ -83,7 +77,7 @@ namespace dxvk {
viewInfo.image = image->handle();
viewInfo.viewType = info.type;
viewInfo.format = info.format;
viewInfo.components = componentMapping;
viewInfo.components = info.swizzle;
viewInfo.subresourceRange = subresourceRange;
if (m_vkd->vkCreateImageView(m_vkd->device(), &viewInfo, nullptr, &m_view) != VK_SUCCESS)

View File

@ -60,17 +60,26 @@ namespace dxvk {
*/
struct DxvkImageViewCreateInfo {
/// Image view dimension
VkImageViewType type;
VkImageViewType type = VK_IMAGE_VIEW_TYPE_2D;
/// Pixel format
VkFormat format;
VkFormat format = VK_FORMAT_UNDEFINED;
/// Subresources to use in the view
VkImageAspectFlags aspect;
uint32_t minLevel;
uint32_t numLevels;
uint32_t minLayer;
uint32_t numLayers;
VkImageAspectFlags aspect = 0;
uint32_t minLevel = 0;
uint32_t numLevels = 0;
uint32_t minLayer = 0;
uint32_t numLayers = 0;
/// Component mapping. Defaults to identity.
VkComponentMapping swizzle = {
VK_COMPONENT_SWIZZLE_IDENTITY,
VK_COMPONENT_SWIZZLE_IDENTITY,
VK_COMPONENT_SWIZZLE_IDENTITY,
VK_COMPONENT_SWIZZLE_IDENTITY,
};
};