|
|
@ -315,7 +315,6 @@ public:
|
|
|
|
"supported on this device");
|
|
|
|
"supported on this device");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if (ir.UsesLayer() || ir.UsesViewportIndex()) {
|
|
|
|
if (ir.UsesLayer() || ir.UsesViewportIndex()) {
|
|
|
|
if (ir.UsesViewportIndex()) {
|
|
|
|
if (ir.UsesViewportIndex()) {
|
|
|
|
AddCapability(spv::Capability::MultiViewport);
|
|
|
|
AddCapability(spv::Capability::MultiViewport);
|
|
|
@ -325,11 +324,9 @@ public:
|
|
|
|
AddCapability(spv::Capability::ShaderViewportIndexLayerEXT);
|
|
|
|
AddCapability(spv::Capability::ShaderViewportIndexLayerEXT);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if (device.IsFormatlessImageLoadSupported()) {
|
|
|
|
if (device.IsFormatlessImageLoadSupported()) {
|
|
|
|
AddCapability(spv::Capability::StorageImageReadWithoutFormat);
|
|
|
|
AddCapability(spv::Capability::StorageImageReadWithoutFormat);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if (device.IsFloat16Supported()) {
|
|
|
|
if (device.IsFloat16Supported()) {
|
|
|
|
AddCapability(spv::Capability::Float16);
|
|
|
|
AddCapability(spv::Capability::Float16);
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -377,6 +374,9 @@ public:
|
|
|
|
if (header.ps.omap.depth) {
|
|
|
|
if (header.ps.omap.depth) {
|
|
|
|
AddExecutionMode(main, spv::ExecutionMode::DepthReplacing);
|
|
|
|
AddExecutionMode(main, spv::ExecutionMode::DepthReplacing);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
if (specialization.early_fragment_tests) {
|
|
|
|
|
|
|
|
AddExecutionMode(main, spv::ExecutionMode::EarlyFragmentTests);
|
|
|
|
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
case ShaderType::Compute:
|
|
|
|
case ShaderType::Compute:
|
|
|
|
const auto workgroup_size = specialization.workgroup_size;
|
|
|
|
const auto workgroup_size = specialization.workgroup_size;
|
|
|
|