Handle boolean inputs in vulkan shader parameters

* We change to use VarType instead of CompType for signature parameters which
  allows us to represent different types of variables beyond just
  unsigned/signed integer and float.
This commit is contained in:
baldurk committed 2020-05-07 22:46:41 +01:00
1 parent c70929d40a
commit 90c10ea1fc
23 files changed
+186 -200

No files matched your search

+1 -16
View File
@@ -899,22 +899,7 @@ ResourceFormat GetInterpretedResourceFormat(const ShaderConstant &elem)
ResourceFormat format;
format.type = interpretType;
switch(elem.type.descriptor.type)
{
case VarType::Half:
case VarType::Float: format.compType = CompType::Float; break;
case VarType::Double: format.compType = CompType::Double; break;
case VarType::SInt:
case VarType::SShort:
case VarType::SLong:
case VarType::SByte: format.compType = CompType::SInt; break;
case VarType::Bool:
case VarType::UInt:
case VarType::UShort:
case VarType::ULong:
case VarType::UByte: format.compType = CompType::UInt; break;
default: format.compType = CompType::UInt; break;
}
format.compType = VarTypeCompType(elem.type.descriptor.type);
if(interpretCompType != CompType::Typeless)
format.compType = interpretCompType;
+1 -16
View File
@@ -1140,22 +1140,7 @@ QString ToQStr(const AddressMode addr, const GraphicsAPI apitype)
QString TypeString(const SigParameter &sig)
{
QString ret = lit("");
if(sig.compType == CompType::Float)
ret += lit("float");
else if(sig.compType == CompType::UInt || sig.compType == CompType::UScaled)
ret += lit("uint");
else if(sig.compType == CompType::SInt || sig.compType == CompType::SScaled)
ret += lit("int");
else if(sig.compType == CompType::UNorm || sig.compType == CompType::UNormSRGB)
ret += lit("unorm float");
else if(sig.compType == CompType::SNorm)
ret += lit("snorm float");
else if(sig.compType == CompType::Depth)
ret += lit("float");
else if(sig.compType == CompType::Double)
ret += lit("double");
QString ret = ToQStr(sig.varType);
if(sig.compCount > 1)
ret += QString::number(sig.compCount);