shader,spirv: Implement ImageQueryLod.

This commit is contained in:
FernandoS27 2021-03-28 19:47:52 +02:00 committed by ameerj
parent 2c276ec6eb
commit 613b48c4a2
9 changed files with 38 additions and 1 deletions

View file

@ -383,7 +383,8 @@ void VisitUsages(Info& info, IR::Inst& inst) {
case IR::Opcode::ImageGather:
case IR::Opcode::ImageGatherDref:
case IR::Opcode::ImageFetch:
case IR::Opcode::ImageQueryDimensions: {
case IR::Opcode::ImageQueryDimensions:
case IR::Opcode::ImageQueryLod: {
const TextureType type{inst.Flags<IR::TextureInstInfo>().type};
info.uses_sampled_1d |= type == TextureType::Color1D || type == TextureType::ColorArray1D ||
type == TextureType::Shadow1D || type == TextureType::ShadowArray1D;

View file

@ -57,6 +57,9 @@ IR::Opcode IndexedInstruction(const IR::Inst& inst) {
case IR::Opcode::BoundImageQueryDimensions:
case IR::Opcode::BindlessImageQueryDimensions:
return IR::Opcode::ImageQueryDimensions;
case IR::Opcode::BoundImageQueryLod:
case IR::Opcode::BindlessImageQueryLod:
return IR::Opcode::ImageQueryLod;
default:
return IR::Opcode::Void;
}
@ -72,6 +75,7 @@ bool IsBindless(const IR::Inst& inst) {
case IR::Opcode::BindlessImageGatherDref:
case IR::Opcode::BindlessImageFetch:
case IR::Opcode::BindlessImageQueryDimensions:
case IR::Opcode::BindlessImageQueryLod:
return true;
case IR::Opcode::BoundImageSampleImplicitLod:
case IR::Opcode::BoundImageSampleExplicitLod:
@ -81,6 +85,7 @@ bool IsBindless(const IR::Inst& inst) {
case IR::Opcode::BoundImageGatherDref:
case IR::Opcode::BoundImageFetch:
case IR::Opcode::BoundImageQueryDimensions:
case IR::Opcode::BoundImageQueryLod:
return false;
default:
throw InvalidArgument("Invalid opcode {}", inst.Opcode());