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