Enable gather operations for all texture dimensions

This commit is contained in:
baldurk
2020-04-15 18:10:10 +01:00
parent 137a613179
commit 1f23e28893
+12 -5
View File
@@ -1359,9 +1359,9 @@ private:
rdcspv::Id(),
editor.DeclareType(rdcspv::Image(base, rdcspv::Dim::_1D, 0, 1, 0, 1, unk)),
editor.DeclareType(rdcspv::Image(base, rdcspv::Dim::_2D, 0, 1, 0, 1, unk)),
editor.DeclareType(rdcspv::Image(base, rdcspv::Dim::_3D, 0, 1, 0, 1, unk)),
editor.DeclareType(rdcspv::Image(base, rdcspv::Dim::_3D, 0, 0, 0, 1, unk)),
editor.DeclareType(rdcspv::Image(base, rdcspv::Dim::_2D, 0, 1, 1, 1, unk)),
editor.DeclareType(rdcspv::Image(base, rdcspv::Dim::Buffer, 0, 1, 0, 1, unk)),
editor.DeclareType(rdcspv::Image(base, rdcspv::Dim::Buffer, 0, 0, 0, 1, unk)),
editor.DeclareType(rdcspv::Sampler()),
};
rdcspv::Id texSampVars[(uint32_t)ShaderDebugBind::Count];
@@ -1476,9 +1476,11 @@ private:
uint32_t sampIdx = (uint32_t)ShaderDebugBind::Sampler;
// for(uint32_t i = (uint32_t)ShaderDebugBind::First; i < (uint32_t)ShaderDebugBind::Count; i++)
uint32_t i = (uint32_t)ShaderDebugBind::Tex2D;
for(uint32_t i = (uint32_t)ShaderDebugBind::First; i < (uint32_t)ShaderDebugBind::Count; i++)
{
if(i == sampIdx)
continue;
{
rdcspv::Op op = rdcspv::Op::ImageFetch;
@@ -1487,7 +1489,7 @@ private:
rdcspv::ImageOperandsAndParamDatas imageOperands;
if(i != (uint32_t)ShaderDebugBind::Buffer)
if(i != (uint32_t)ShaderDebugBind::Buffer && i != (uint32_t)ShaderDebugBind::Tex2DMS)
imageOperands.setLod(texel_lod);
cases.add(rdcspv::OpLabel(label));
@@ -1499,6 +1501,11 @@ private:
cases.add(rdcspv::OpBranch(breakLabel));
}
// buffers and multisampled images don't support sampling, so skip the other operations at
// this point
if(i == (uint32_t)ShaderDebugBind::Buffer || i == (uint32_t)ShaderDebugBind::Tex2DMS)
continue;
for(rdcspv::Op op : {rdcspv::Op::ImageSampleExplicitLod, rdcspv::Op::ImageSampleImplicitLod})
{
rdcspv::Id label = editor.MakeId();