aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorGravatar egdaniel <egdaniel@google.com>2016-03-30 12:06:48 -0700
committerGravatar Commit bot <commit-bot@chromium.org>2016-03-30 12:06:48 -0700
commitd632bb4dfc184d7c523bb436940c182ed42551ea (patch)
tree75124748c5f9207816725f601c1326a8b788561b /src
parent128245c61d56abcacdb152ad08038c5d9c919df0 (diff)
Enable dual source blending for Vulkan
Diffstat (limited to 'src')
-rw-r--r--src/gpu/vk/GrVkCaps.cpp9
-rw-r--r--src/gpu/vk/GrVkPipelineStateBuilder.cpp4
-rw-r--r--src/gpu/vk/GrVkPipelineStateBuilder.h1
3 files changed, 10 insertions, 4 deletions
diff --git a/src/gpu/vk/GrVkCaps.cpp b/src/gpu/vk/GrVkCaps.cpp
index 8f46408706..88ff8ee3e0 100644
--- a/src/gpu/vk/GrVkCaps.cpp
+++ b/src/gpu/vk/GrVkCaps.cpp
@@ -62,7 +62,9 @@ void GrVkCaps::init(const GrContextOptions& contextOptions, const GrVkInterface*
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 @@ void GrVkCaps::initGLSLCaps(const VkPhysicalDeviceProperties& properties,
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 871e94e1d3..00e81d4b9c 100644
--- a/src/gpu/vk/GrVkPipelineStateBuilder.cpp
+++ b/src/gpu/vk/GrVkPipelineStateBuilder.cpp
@@ -53,6 +53,10 @@ void GrVkPipelineStateBuilder::finalizeFragmentOutputColor(GrGLSLShaderVar& outp
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 5120e25a9a..5a4cfb8226 100644
--- a/src/gpu/vk/GrVkPipelineStateBuilder.h
+++ b/src/gpu/vk/GrVkPipelineStateBuilder.h
@@ -43,6 +43,7 @@ public:
GrVkGpu* gpu() const { return fGpu; }
void finalizeFragmentOutputColor(GrGLSLShaderVar& outputColor) override;
+ void finalizeFragmentSecondaryColor(GrGLSLShaderVar& outputColor) override;
private:
GrVkPipelineStateBuilder(GrVkGpu*,