diff options
author | 2016-03-25 09:26:03 -0700 | |
---|---|---|
committer | 2016-03-25 09:26:03 -0700 | |
commit | 28ef445d2e55ada7a45fd74e9248b4f22b16e061 (patch) | |
tree | 1059a795d12552e4b7207b83143b7d99c320cca1 /src/gpu/vk | |
parent | 5443f1b6bab26e0ee010d8b255f9ab6498a096ea (diff) |
added support for glMinSampleShading
GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1812223002
Review URL: https://codereview.chromium.org/1812223002
Diffstat (limited to 'src/gpu/vk')
-rw-r--r-- | src/gpu/vk/GrVkCaps.cpp | 1 | ||||
-rw-r--r-- | src/gpu/vk/GrVkPipeline.cpp | 12 |
2 files changed, 9 insertions, 4 deletions
diff --git a/src/gpu/vk/GrVkCaps.cpp b/src/gpu/vk/GrVkCaps.cpp index 89a5a73042..3126ca0f1d 100644 --- a/src/gpu/vk/GrVkCaps.cpp +++ b/src/gpu/vk/GrVkCaps.cpp @@ -116,6 +116,7 @@ void GrVkCaps::initGrCaps(const VkPhysicalDeviceProperties& properties, fStencilWrapOpsSupport = true; fOversizedStencilSupport = true; + fSampleShadingSupport = SkToBool(featureFlags & kSampleRateShading_GrVkFeatureFlag); } void GrVkCaps::initGLSLCaps(const VkPhysicalDeviceProperties& properties, diff --git a/src/gpu/vk/GrVkPipeline.cpp b/src/gpu/vk/GrVkPipeline.cpp index 9c0fd28424..794acb077c 100644 --- a/src/gpu/vk/GrVkPipeline.cpp +++ b/src/gpu/vk/GrVkPipeline.cpp @@ -203,7 +203,9 @@ void setup_viewport_scissor_state(const GrVkGpu* gpu, SkASSERT(viewportInfo->viewportCount == viewportInfo->scissorCount); } -void setup_multisample_state(const GrPipeline& pipeline, +void setup_multisample_state(const GrPipeline& pipeline, + const GrPrimitiveProcessor& primProc, + const GrCaps* caps, VkPipelineMultisampleStateCreateInfo* multisampleInfo) { memset(multisampleInfo, 0, sizeof(VkPipelineMultisampleStateCreateInfo)); multisampleInfo->sType = VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO; @@ -212,8 +214,10 @@ void setup_multisample_state(const GrPipeline& pipeline, int numSamples = pipeline.getRenderTarget()->numColorSamples(); SkAssertResult(GrSampleCountToVkSampleCount(numSamples, &multisampleInfo->rasterizationSamples)); - multisampleInfo->sampleShadingEnable = VK_FALSE; - multisampleInfo->minSampleShading = 0; + float sampleShading = primProc.getSampleShading(); + SkASSERT(sampleShading == 0.0f || caps->sampleShadingSupport()); + multisampleInfo->sampleShadingEnable = sampleShading > 0.0f; + multisampleInfo->minSampleShading = sampleShading; multisampleInfo->pSampleMask = nullptr; multisampleInfo->alphaToCoverageEnable = VK_FALSE; multisampleInfo->alphaToOneEnable = VK_FALSE; @@ -427,7 +431,7 @@ GrVkPipeline* GrVkPipeline::Create(GrVkGpu* gpu, const GrPipeline& pipeline, setup_viewport_scissor_state(gpu, pipeline, vkRT, &viewportInfo); VkPipelineMultisampleStateCreateInfo multisampleInfo; - setup_multisample_state(pipeline, &multisampleInfo); + setup_multisample_state(pipeline, primProc, gpu->caps(), &multisampleInfo); // We will only have one color attachment per pipeline. VkPipelineColorBlendAttachmentState attachmentStates[1]; |