Support the sampleRateShading feature.

This is for fragment shaders that run per-sample instead of
per-fragment. It implies that the `SampleId`, `SampleMask`, and
`SamplePosition` builtins, as well as per-sample interpolation, are all
available--using any of these causes the frag shader to run once per
sample. (In Metal, reading the color buffers may also cause a frag
shader to run per-sample.)

Update SPIRV-Cross to pull in a change that properly translates the
`SamplePosition` builtin to a form that Metal can understand.
This commit is contained in:
Chip Davis 2018-09-12 14:40:58 -05:00
parent 13a950e1ec
commit eeca918c92
2 changed files with 3 additions and 2 deletions

View File

@ -1 +1 @@
9ffd4172b46408ab6b03625b0f4f9cfafa5aaa71
bfbe36f6362fa277aa0f966e35927c9aedd60d01

View File

@ -480,6 +480,7 @@ void MVKPhysicalDevice::initFeatures() {
_features.robustBufferAccess = true; // XXX Required by Vulkan spec
_features.fullDrawIndexUint32 = true;
_features.independentBlend = true;
_features.sampleRateShading = true;
_features.depthBiasClamp = true;
_features.fillModeNonSolid = true;
_features.largePoints = true;
@ -532,7 +533,7 @@ void MVKPhysicalDevice::initFeatures() {
// VkBool32 independentBlend; // done
// VkBool32 geometryShader;
// VkBool32 tessellationShader;
// VkBool32 sampleRateShading;
// VkBool32 sampleRateShading; // done
// VkBool32 dualSrcBlend; // done
// VkBool32 logicOp;
// VkBool32 multiDrawIndirect; // done