Index: src/gpu/vk/GrVkCaps.cpp |
diff --git a/src/gpu/vk/GrVkCaps.cpp b/src/gpu/vk/GrVkCaps.cpp |
index 8f46408706e8f22eeb1e9f048c432596bc514355..1ddeeb8a94b7f82d84f25b3370b881e8acf433ee 100644 |
--- a/src/gpu/vk/GrVkCaps.cpp |
+++ b/src/gpu/vk/GrVkCaps.cpp |
@@ -153,6 +153,23 @@ void GrVkCaps::initGLSLCaps(const VkPhysicalDeviceProperties& properties, |
#endif |
glslCaps->fIntegerSupport = true; |
+ // Assume the minimum precisions mandated by the GLSL spec for now. |
+ glslCaps->fShaderPrecisionVaries = true; |
+ for (int s = 0; s < kGrShaderTypeCount; ++s) { |
egdaniel
2016/04/05 21:09:48
in vulkan/SPIR-V,
highp in glsl maps to 32 bit fl
Chris Dalton
2016/04/05 21:54:49
Done.
|
+ auto& lowp = glslCaps->fFloatPrecisions[s][kLow_GrSLPrecision]; |
+ lowp.fLogRangeLow = lowp.fLogRangeHigh = 1; |
+ lowp.fBits = 8; |
+ |
+ auto& mediump = glslCaps->fFloatPrecisions[s][kLow_GrSLPrecision]; |
+ mediump.fLogRangeLow = lowp.fLogRangeHigh = 14; |
+ mediump.fBits = 10; |
+ |
+ auto& highp = glslCaps->fFloatPrecisions[s][kLow_GrSLPrecision]; |
+ highp.fLogRangeLow = highp.fLogRangeHigh = 62; |
+ highp.fBits = 16; |
+ } |
+ glslCaps->initEffectiveFloatPrecisionTable(); |
+ |
glslCaps->fMaxVertexSamplers = |
glslCaps->fMaxGeometrySamplers = |
glslCaps->fMaxFragmentSamplers = SkTMin(properties.limits.maxPerStageDescriptorSampledImages, |