[dxbc] Fix constant texture offsets with 1D textures

Fixes #3572.
This commit is contained in:
Philip Rebohle 2023-07-22 17:37:37 +02:00
parent 1e11db98d0
commit b4d87eaac0
1 changed files with 21 additions and 9 deletions

View File

@ -3383,9 +3383,13 @@ namespace dxvk {
}; };
imageOperands.flags |= spv::ImageOperandsConstOffsetMask; imageOperands.flags |= spv::ImageOperandsConstOffsetMask;
imageOperands.sConstOffset = m_module.constComposite( imageOperands.sConstOffset = offsetIds[0];
getVectorTypeId({ DxbcScalarType::Sint32, imageLayerDim }),
imageLayerDim, offsetIds.data()); if (imageLayerDim > 1) {
imageOperands.sConstOffset = m_module.constComposite(
getVectorTypeId({ DxbcScalarType::Sint32, imageLayerDim }),
imageLayerDim, offsetIds.data());
}
} }
// The LOD is not present when reading from // The LOD is not present when reading from
@ -3519,9 +3523,13 @@ namespace dxvk {
}; };
imageOperands.flags |= spv::ImageOperandsConstOffsetMask; imageOperands.flags |= spv::ImageOperandsConstOffsetMask;
imageOperands.sConstOffset = m_module.constComposite( imageOperands.sConstOffset = offsetIds[0];
getVectorTypeId({ DxbcScalarType::Sint32, imageLayerDim }),
imageLayerDim, offsetIds.data()); if (imageLayerDim > 1) {
imageOperands.sConstOffset = m_module.constComposite(
getVectorTypeId({ DxbcScalarType::Sint32, imageLayerDim }),
imageLayerDim, offsetIds.data());
}
} }
// Gathering texels always returns a four-component // Gathering texels always returns a four-component
@ -3661,9 +3669,13 @@ namespace dxvk {
}; };
imageOperands.flags |= spv::ImageOperandsConstOffsetMask; imageOperands.flags |= spv::ImageOperandsConstOffsetMask;
imageOperands.sConstOffset = m_module.constComposite( imageOperands.sConstOffset = offsetIds[0];
getVectorTypeId({ DxbcScalarType::Sint32, imageLayerDim }),
imageLayerDim, offsetIds.data()); if (imageLayerDim > 1) {
imageOperands.sConstOffset = m_module.constComposite(
getVectorTypeId({ DxbcScalarType::Sint32, imageLayerDim }),
imageLayerDim, offsetIds.data());
}
} }
if (hasMinLod) { if (hasMinLod) {