Enable dual source blending for Vulkan
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1837213003
Review URL: https://codereview.chromium.org/1837213003
diff --git a/src/gpu/vk/GrVkCaps.cpp b/src/gpu/vk/GrVkCaps.cpp
index 8f46408..88ff8ee 100644
--- a/src/gpu/vk/GrVkCaps.cpp
+++ b/src/gpu/vk/GrVkCaps.cpp
@@ -62,7 +62,9 @@
this->initStencilFormats(vkInterface, physDev);
if (SkToBool(extensionFlags & kNV_glsl_shader_GrVkExtensionFlag)) {
- fCanUseGLSLForShaderModule = true;
+ // Currently disabling this feature since it does not play well with validation layers which
+ // expect a SPIR-V shader
+ // fCanUseGLSLForShaderModule = true;
}
this->applyOptionsOverrides(contextOptions);
@@ -147,10 +149,9 @@
glslCaps->fShaderDerivativeSupport = true;
glslCaps->fGeometryShaderSupport = SkToBool(featureFlags & kGeometryShader_GrVkFeatureFlag);
-#if 0
- // For now disabling dual source blending till we get it hooked up in the rest of system
+
glslCaps->fDualSourceBlendingSupport = SkToBool(featureFlags & kDualSrcBlend_GrVkFeatureFlag);
-#endif
+
glslCaps->fIntegerSupport = true;
glslCaps->fMaxVertexSamplers =
diff --git a/src/gpu/vk/GrVkPipelineStateBuilder.cpp b/src/gpu/vk/GrVkPipelineStateBuilder.cpp
index 871e94e..00e81d4 100644
--- a/src/gpu/vk/GrVkPipelineStateBuilder.cpp
+++ b/src/gpu/vk/GrVkPipelineStateBuilder.cpp
@@ -53,6 +53,10 @@
outputColor.setLayoutQualifier("location = 0");
}
+void GrVkPipelineStateBuilder::finalizeFragmentSecondaryColor(GrGLSLShaderVar& outputColor) {
+ outputColor.setLayoutQualifier("location = 1");
+}
+
VkShaderStageFlags visibility_to_vk_stage_flags(uint32_t visibility) {
VkShaderStageFlags flags = 0;
diff --git a/src/gpu/vk/GrVkPipelineStateBuilder.h b/src/gpu/vk/GrVkPipelineStateBuilder.h
index 5120e25..5a4cfb8 100644
--- a/src/gpu/vk/GrVkPipelineStateBuilder.h
+++ b/src/gpu/vk/GrVkPipelineStateBuilder.h
@@ -43,6 +43,7 @@
GrVkGpu* gpu() const { return fGpu; }
void finalizeFragmentOutputColor(GrGLSLShaderVar& outputColor) override;
+ void finalizeFragmentSecondaryColor(GrGLSLShaderVar& outputColor) override;
private:
GrVkPipelineStateBuilder(GrVkGpu*,