|
|
|
@ -314,7 +314,8 @@ u32 ShaderIR::DecodeImage(NodeBlock& bb, u32 pc) { |
|
|
|
auto descriptor = [this, instr] { |
|
|
|
std::optional<Tegra::Engines::SamplerDescriptor> descriptor; |
|
|
|
if (instr.suldst.is_immediate) { |
|
|
|
descriptor = registry.ObtainBoundSampler(instr.image.index.Value()); |
|
|
|
descriptor = |
|
|
|
registry.ObtainBoundSampler(static_cast<u32>(instr.image.index.Value())); |
|
|
|
} else { |
|
|
|
const Node image_register = GetRegister(instr.gpr39); |
|
|
|
const auto [base_image, buffer, offset] = TrackCbuf( |
|
|
|
@ -328,8 +329,6 @@ u32 ShaderIR::DecodeImage(NodeBlock& bb, u32 pc) { |
|
|
|
}(); |
|
|
|
|
|
|
|
const auto comp_mask = GetImageComponentMask(descriptor.format); |
|
|
|
// TODO(namkazt): let's suppose image format is same as store type. we check on it
|
|
|
|
// later.
|
|
|
|
|
|
|
|
switch (instr.suldst.GetStoreDataLayout()) { |
|
|
|
case StoreType::Bits32: { |
|
|
|
|