Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1490)

Side by Side Diff: src/gpu/gl/GrGpuGL.cpp

Issue 12938005: Work around MSAA/lines issue on Linux bot. (Closed) Base URL: http://skia.googlecode.com/svn/trunk/
Patch Set: Created 7 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright 2011 Google Inc. 2 * Copyright 2011 Google Inc.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license that can be 4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file. 5 * found in the LICENSE file.
6 */ 6 */
7 7
8 8
9 #include "GrGpuGL.h" 9 #include "GrGpuGL.h"
10 #include "GrGLStencilBuffer.h" 10 #include "GrGLStencilBuffer.h"
(...skipping 1916 matching lines...) Expand 10 before | Expand all | Expand 10 after
1927 fStencilSettings, 1927 fStencilSettings,
1928 GR_GL_FRONT_AND_BACK, 1928 GR_GL_FRONT_AND_BACK,
1929 GrStencilSettings::kFront_Face); 1929 GrStencilSettings::kFront_Face);
1930 } 1930 }
1931 } 1931 }
1932 fHWStencilSettings = fStencilSettings; 1932 fHWStencilSettings = fStencilSettings;
1933 } 1933 }
1934 } 1934 }
1935 1935
1936 void GrGpuGL::flushAAState(DrawType type) { 1936 void GrGpuGL::flushAAState(DrawType type) {
1937 // At least some ATI linux drivers will render GL_LINES incorrectly when MSAA st ate is enabled but
1938 // the target is not multisampled. Single pixel wide lines are rendered thicker than 1 pixel wide.
robertphillips 2013/03/19 18:56:05 I think if we leave the #if 0 code we should have
bsalomon 2013/03/19 18:56:46 Will add a comment
1939 #if 0
1940 #define RT_HAS_MSAA rt->isMultisampled()
1941 #else
1942 #define RT_HAS_MSAA (rt->isMultisampled() || kDrawLines_DrawType == type)
1943 #endif
1944
1937 const GrRenderTarget* rt = this->getDrawState().getRenderTarget(); 1945 const GrRenderTarget* rt = this->getDrawState().getRenderTarget();
1938 if (kDesktop_GrGLBinding == this->glBinding()) { 1946 if (kDesktop_GrGLBinding == this->glBinding()) {
1939 // ES doesn't support toggling GL_MULTISAMPLE and doesn't have 1947 // ES doesn't support toggling GL_MULTISAMPLE and doesn't have
1940 // smooth lines. 1948 // smooth lines.
1941 // we prefer smooth lines over multisampled lines 1949 // we prefer smooth lines over multisampled lines
1942 bool smoothLines = false; 1950 bool smoothLines = false;
1943 1951
1944 if (kDrawLines_DrawType == type) { 1952 if (kDrawLines_DrawType == type) {
1945 smoothLines = this->willUseHWAALines(); 1953 smoothLines = this->willUseHWAALines();
1946 if (smoothLines) { 1954 if (smoothLines) {
1947 if (kYes_TriState != fHWAAState.fSmoothLineEnabled) { 1955 if (kYes_TriState != fHWAAState.fSmoothLineEnabled) {
1948 GL_CALL(Enable(GR_GL_LINE_SMOOTH)); 1956 GL_CALL(Enable(GR_GL_LINE_SMOOTH));
1949 fHWAAState.fSmoothLineEnabled = kYes_TriState; 1957 fHWAAState.fSmoothLineEnabled = kYes_TriState;
1950 // must disable msaa to use line smoothing 1958 // must disable msaa to use line smoothing
1951 if (rt->isMultisampled() && 1959 if (RT_HAS_MSAA &&
1952 kNo_TriState != fHWAAState.fMSAAEnabled) { 1960 kNo_TriState != fHWAAState.fMSAAEnabled) {
1953 GL_CALL(Disable(GR_GL_MULTISAMPLE)); 1961 GL_CALL(Disable(GR_GL_MULTISAMPLE));
1954 fHWAAState.fMSAAEnabled = kNo_TriState; 1962 fHWAAState.fMSAAEnabled = kNo_TriState;
1955 } 1963 }
1956 } 1964 }
1957 } else { 1965 } else {
1958 if (kNo_TriState != fHWAAState.fSmoothLineEnabled) { 1966 if (kNo_TriState != fHWAAState.fSmoothLineEnabled) {
1959 GL_CALL(Disable(GR_GL_LINE_SMOOTH)); 1967 GL_CALL(Disable(GR_GL_LINE_SMOOTH));
1960 fHWAAState.fSmoothLineEnabled = kNo_TriState; 1968 fHWAAState.fSmoothLineEnabled = kNo_TriState;
1961 } 1969 }
1962 } 1970 }
1963 } 1971 }
1964 if (!smoothLines && rt->isMultisampled()) { 1972 if (!smoothLines && RT_HAS_MSAA) {
1965 // FIXME: GL_NV_pr doesn't seem to like MSAA disabled. The paths 1973 // FIXME: GL_NV_pr doesn't seem to like MSAA disabled. The paths
1966 // convex hulls of each segment appear to get filled. 1974 // convex hulls of each segment appear to get filled.
1967 bool enableMSAA = kStencilPath_DrawType == type || 1975 bool enableMSAA = kStencilPath_DrawType == type ||
1968 this->getDrawState().isHWAntialiasState(); 1976 this->getDrawState().isHWAntialiasState();
1969 if (enableMSAA) { 1977 if (enableMSAA) {
1970 if (kYes_TriState != fHWAAState.fMSAAEnabled) { 1978 if (kYes_TriState != fHWAAState.fMSAAEnabled) {
1971 GL_CALL(Enable(GR_GL_MULTISAMPLE)); 1979 GL_CALL(Enable(GR_GL_MULTISAMPLE));
1972 fHWAAState.fMSAAEnabled = kYes_TriState; 1980 fHWAAState.fMSAAEnabled = kYes_TriState;
1973 } 1981 }
1974 } else { 1982 } else {
(...skipping 358 matching lines...) Expand 10 before | Expand all | Expand 10 after
2333 this->setVertexArrayID(gpu, 0); 2341 this->setVertexArrayID(gpu, 0);
2334 } 2342 }
2335 int attrCount = gpu->glCaps().maxVertexAttributes(); 2343 int attrCount = gpu->glCaps().maxVertexAttributes();
2336 if (fDefaultVertexArrayAttribState.count() != attrCount) { 2344 if (fDefaultVertexArrayAttribState.count() != attrCount) {
2337 fDefaultVertexArrayAttribState.resize(attrCount); 2345 fDefaultVertexArrayAttribState.resize(attrCount);
2338 } 2346 }
2339 attribState = &fDefaultVertexArrayAttribState; 2347 attribState = &fDefaultVertexArrayAttribState;
2340 } 2348 }
2341 return attribState; 2349 return attribState;
2342 } 2350 }
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698