From d18bb23667d11db4779c13253a7e0cd90bf7a57f Mon Sep 17 00:00:00 2001 From: "joel.liang" Date: Thu, 4 Jun 2015 06:52:29 -0700 Subject: [PATCH] Fix edge-line artifacts issue on Mali Some GMs show edge-line artifacts on Mali at the bottom/right of the canvas. Change the 'rtAdjustment' uniform precision from 'midiump' to 'highp' if the GPU vendor is ARM. NOTE: Vertex Shader should have default 'highp' precision, but now we explicit declared some uniform/attribute precision as 'midiump'. This patch should fix these issues: Issue 3693: Some GMs produce random artifacts on Mali in MSAA4 https://code.google.com/p/skia/issues/detail?id=3693 Issue 3685: srcmode GM has top/right line artifacts on Mali T604 in MSAA4 https://code.google.com/p/skia/issues/detail?id=3685 BUG=skia: Review URL: https://codereview.chromium.org/1154163012 --- src/gpu/gl/builders/GrGLVertexShaderBuilder.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/gpu/gl/builders/GrGLVertexShaderBuilder.cpp b/src/gpu/gl/builders/GrGLVertexShaderBuilder.cpp index f484497..6d5d344 100644 --- a/src/gpu/gl/builders/GrGLVertexShaderBuilder.cpp +++ b/src/gpu/gl/builders/GrGLVertexShaderBuilder.cpp @@ -36,10 +36,15 @@ void GrGLVertexBuilder::emitAttributes(const GrGeometryProcessor& gp) { void GrGLVertexBuilder::transformToNormalizedDeviceSpace(const GrShaderVar& posVar) { SkASSERT(!fRtAdjustName); + GrSLPrecision precision = kDefault_GrSLPrecision; + if (fProgramBuilder->ctxInfo().vendor() == kARM_GrGLVendor) { + precision = kHigh_GrSLPrecision; + } + // setup RT Uniform fProgramBuilder->fUniformHandles.fRTAdjustmentUni = fProgramBuilder->addUniform(GrGLProgramBuilder::kVertex_Visibility, - kVec4f_GrSLType, kDefault_GrSLPrecision, + kVec4f_GrSLType, precision, fProgramBuilder->rtAdjustment(), &fRtAdjustName); if (this->getProgramBuilder()->desc().header().fSnapVerticesToPixelCenters) { -- 2.7.4