Add support for OpConstantNull and OpConstantSampler to spirv-remap

Fixes issue #1408
This commit is contained in:
GregF 2018-06-19 13:47:50 -06:00
parent c99304c5dc
commit c6831d1ed4

View File

@ -220,11 +220,11 @@ namespace spv {
bool spirvbin_t::isConstOp(spv::Op opCode) const bool spirvbin_t::isConstOp(spv::Op opCode) const
{ {
switch (opCode) { switch (opCode) {
case spv::OpConstantNull:
case spv::OpConstantSampler: case spv::OpConstantSampler:
error("unimplemented constant type"); error("unimplemented constant type");
return true; return true;
case spv::OpConstantNull:
case spv::OpConstantTrue: case spv::OpConstantTrue:
case spv::OpConstantFalse: case spv::OpConstantFalse:
case spv::OpConstantComposite: case spv::OpConstantComposite:
@ -1326,10 +1326,6 @@ namespace spv {
case spv::OpTypeReserveId: return 300002; case spv::OpTypeReserveId: return 300002;
case spv::OpTypeQueue: return 300003; case spv::OpTypeQueue: return 300003;
case spv::OpTypePipe: return 300004; case spv::OpTypePipe: return 300004;
case spv::OpConstantNull: return 300005;
case spv::OpConstantSampler: return 300006;
case spv::OpConstantTrue: return 300007; case spv::OpConstantTrue: return 300007;
case spv::OpConstantFalse: return 300008; case spv::OpConstantFalse: return 300008;
case spv::OpConstantComposite: case spv::OpConstantComposite:
@ -1346,6 +1342,18 @@ namespace spv {
hash += w * spv[typeStart+w]; hash += w * spv[typeStart+w];
return hash; return hash;
} }
case spv::OpConstantNull:
{
std::uint32_t hash = 500009 + hashType(idPos(spv[typeStart+1]));
return hash;
}
case spv::OpConstantSampler:
{
std::uint32_t hash = 600011 + hashType(idPos(spv[typeStart+1]));
for (unsigned w=3; w < wordCount; ++w)
hash += w * spv[typeStart+w];
return hash;
}
default: default:
error("unknown type opcode"); error("unknown type opcode");