spirv-reader: WGSL does not support OpImageQueryLod
Bug: tint:109 Change-Id: Ife61dca63c605a456407140d5c4fdb6b4bfa97a0 Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/39681 Commit-Queue: David Neto <dneto@google.com> Reviewed-by: Ben Clayton <bclayton@google.com> Auto-Submit: David Neto <dneto@google.com>
This commit is contained in:
parent
db67a287b8
commit
4d098a7b75
|
@ -539,6 +539,7 @@ bool IsImageQuery(SpvOp opcode) {
|
||||||
case SpvOpImageQuerySizeLod:
|
case SpvOpImageQuerySizeLod:
|
||||||
case SpvOpImageQueryLevels:
|
case SpvOpImageQueryLevels:
|
||||||
case SpvOpImageQuerySamples:
|
case SpvOpImageQuerySamples:
|
||||||
|
case SpvOpImageQueryLod:
|
||||||
return true;
|
return true;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
|
@ -2945,14 +2946,14 @@ bool FunctionEmitter::EmitStatement(const spvtools::opt::Instruction& inst) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (IsSampledImageAccess(inst.opcode()) || IsRawImageAccess(inst.opcode())) {
|
|
||||||
return EmitImageAccess(inst);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (IsImageQuery(inst.opcode())) {
|
if (IsImageQuery(inst.opcode())) {
|
||||||
return EmitImageQuery(inst);
|
return EmitImageQuery(inst);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (IsSampledImageAccess(inst.opcode()) || IsRawImageAccess(inst.opcode())) {
|
||||||
|
return EmitImageAccess(inst);
|
||||||
|
}
|
||||||
|
|
||||||
switch (inst.opcode()) {
|
switch (inst.opcode()) {
|
||||||
case SpvOpNop:
|
case SpvOpNop:
|
||||||
return true;
|
return true;
|
||||||
|
@ -4174,8 +4175,6 @@ bool FunctionEmitter::EmitImageAccess(const spvtools::opt::Instruction& inst) {
|
||||||
case SpvOpImageGather:
|
case SpvOpImageGather:
|
||||||
case SpvOpImageDrefGather:
|
case SpvOpImageDrefGather:
|
||||||
return Fail() << " image gather is not yet supported";
|
return Fail() << " image gather is not yet supported";
|
||||||
case SpvOpImageQueryLod:
|
|
||||||
return Fail() << " image query Lod is not yet supported";
|
|
||||||
case SpvOpImageFetch:
|
case SpvOpImageFetch:
|
||||||
// Read a single texel from a sampled image.
|
// Read a single texel from a sampled image.
|
||||||
builtin_name = "textureLoad";
|
builtin_name = "textureLoad";
|
||||||
|
@ -4398,6 +4397,10 @@ bool FunctionEmitter::EmitImageQuery(const spvtools::opt::Instruction& inst) {
|
||||||
create<ast::TypeConstructorExpression>(Source{}, result_type, exprs)};
|
create<ast::TypeConstructorExpression>(Source{}, result_type, exprs)};
|
||||||
return EmitConstDefOrWriteToHoistedVar(inst, expr);
|
return EmitConstDefOrWriteToHoistedVar(inst, expr);
|
||||||
}
|
}
|
||||||
|
case SpvOpImageQueryLod:
|
||||||
|
return Fail() << "WGSL does not support querying the level of detail of "
|
||||||
|
"an image: "
|
||||||
|
<< inst.PrettyPrint();
|
||||||
case SpvOpImageQuerySizeLod: // TODO(dneto)
|
case SpvOpImageQuerySizeLod: // TODO(dneto)
|
||||||
case SpvOpImageQueryLevels: // TODO(dneto)
|
case SpvOpImageQueryLevels: // TODO(dneto)
|
||||||
case SpvOpImageQuerySamples: // TODO(dneto)
|
case SpvOpImageQuerySamples: // TODO(dneto)
|
||||||
|
|
|
@ -4832,6 +4832,15 @@ TEST_F(SpvParserTest, CombinedImageSampler_IsError) {
|
||||||
HasSubstr("WGSL does not support combined image-samplers: "));
|
HasSubstr("WGSL does not support combined image-samplers: "));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
INSTANTIATE_TEST_SUITE_P(
|
||||||
|
ImageQueryLod_IsError,
|
||||||
|
SpvParserTest_ImageCoordsTest,
|
||||||
|
::testing::ValuesIn(std::vector<ImageCoordsCase>{
|
||||||
|
{"%float 2D 0 0 0 1 Unknown",
|
||||||
|
"%result = OpImageQueryLod %v2int %sampled_image %vf12",
|
||||||
|
"WGSL does not support querying the level of detail of an image: ",
|
||||||
|
{}}}));
|
||||||
|
|
||||||
} // namespace
|
} // namespace
|
||||||
} // namespace spirv
|
} // namespace spirv
|
||||||
} // namespace reader
|
} // namespace reader
|
||||||
|
|
Loading…
Reference in New Issue