mirror of
https://github.com/doitsujin/dxvk.git
synced 2025-02-20 19:54:19 +01:00
[d3d11] Use cube array views for non-array cube maps
This is actually necessary in order to properly render the map mode in Nier:Automata, which binds non-array cube maps to a cube array slot.
This commit is contained in:
parent
c1d6c20066
commit
f5bfaac4b3
@ -285,7 +285,7 @@ namespace dxvk {
|
||||
break;
|
||||
|
||||
case D3D11_SRV_DIMENSION_TEXTURECUBE:
|
||||
viewInfo.type = VK_IMAGE_VIEW_TYPE_CUBE;
|
||||
viewInfo.type = VK_IMAGE_VIEW_TYPE_CUBE_ARRAY;
|
||||
viewInfo.minLevel = desc.TextureCube.MostDetailedMip;
|
||||
viewInfo.numLevels = desc.TextureCube.MipLevels;
|
||||
viewInfo.minLayer = 0;
|
||||
|
@ -659,7 +659,8 @@ namespace dxvk {
|
||||
case DxbcResourceDim::Texture2DMs: return { spv::Dim2D, 0, 1, isUav ? 2u : 1u };
|
||||
case DxbcResourceDim::Texture2DMsArr: return { spv::Dim2D, 1, 1, isUav ? 2u : 1u };
|
||||
case DxbcResourceDim::Texture3D: return { spv::Dim3D, 0, 0, isUav ? 2u : 1u };
|
||||
case DxbcResourceDim::TextureCube: return { spv::DimCube, 0, 0, isUav ? 2u : 1u };
|
||||
// Apps may bind cube maps to a slot that expects cube map arrays
|
||||
case DxbcResourceDim::TextureCube: return { spv::DimCube, 1, 0, isUav ? 2u : 1u };
|
||||
case DxbcResourceDim::TextureCubeArr: return { spv::DimCube, 1, 0, isUav ? 2u : 1u };
|
||||
default: throw DxvkError(str::format("DxbcCompiler: Unsupported resource type: ", resourceType));
|
||||
}
|
||||
@ -670,6 +671,7 @@ namespace dxvk {
|
||||
case DxbcResourceDim::Buffer: m_module.enableCapability(spv::CapabilityImageBuffer); break;
|
||||
case DxbcResourceDim::Texture1D: m_module.enableCapability(spv::CapabilityImage1D); break;
|
||||
case DxbcResourceDim::Texture1DArr: m_module.enableCapability(spv::CapabilityImage1D); break;
|
||||
case DxbcResourceDim::TextureCube: m_module.enableCapability(spv::CapabilityImageCubeArray); break;
|
||||
case DxbcResourceDim::TextureCubeArr: m_module.enableCapability(spv::CapabilityImageCubeArray); break;
|
||||
case DxbcResourceDim::Texture2DMsArr: m_module.enableCapability(spv::CapabilityImageMSArray); break;
|
||||
default: break; // No additional capabilities required
|
||||
@ -4561,7 +4563,7 @@ namespace dxvk {
|
||||
case DxbcResourceDim::Texture2DMs: return VK_IMAGE_VIEW_TYPE_2D;
|
||||
case DxbcResourceDim::Texture2DArr: return VK_IMAGE_VIEW_TYPE_2D_ARRAY;
|
||||
case DxbcResourceDim::Texture2DMsArr: return VK_IMAGE_VIEW_TYPE_2D_ARRAY;
|
||||
case DxbcResourceDim::TextureCube: return VK_IMAGE_VIEW_TYPE_CUBE;
|
||||
case DxbcResourceDim::TextureCube: return VK_IMAGE_VIEW_TYPE_CUBE_ARRAY;
|
||||
case DxbcResourceDim::TextureCubeArr: return VK_IMAGE_VIEW_TYPE_CUBE_ARRAY;
|
||||
case DxbcResourceDim::Texture3D: return VK_IMAGE_VIEW_TYPE_3D;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user