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

Side by Side Diff: src/utils/win/SkWGL_win.cpp

Issue 23882009: Rip out CSAA support (Closed) Base URL: https://skia.googlecode.com/svn/trunk
Patch Set: Created 7 years, 3 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 | « src/gpu/gl/win/GrGLCreateNativeInterface_win.cpp ('k') | 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 /* 2 /*
3 * Copyright 2011 Google Inc. 3 * Copyright 2011 Google Inc.
4 * 4 *
5 * Use of this source code is governed by a BSD-style license that can be 5 * Use of this source code is governed by a BSD-style license that can be
6 * found in the LICENSE file. 6 * found in the LICENSE file.
7 */ 7 */
8 8
9 #include "SkWGL.h" 9 #include "SkWGL.h"
10 10
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
72 HGLRC SkWGLExtensions::createContextAttribs(HDC hDC, 72 HGLRC SkWGLExtensions::createContextAttribs(HDC hDC,
73 HGLRC hShareContext, 73 HGLRC hShareContext,
74 const int *attribList) const { 74 const int *attribList) const {
75 return fCreateContextAttribs(hDC, hShareContext, attribList); 75 return fCreateContextAttribs(hDC, hShareContext, attribList);
76 } 76 }
77 77
78 namespace { 78 namespace {
79 79
80 struct PixelFormat { 80 struct PixelFormat {
81 int fFormat; 81 int fFormat;
82 int fCoverageSamples; 82 int fSampleCnt;
83 int fColorSamples;
84 int fChoosePixelFormatRank; 83 int fChoosePixelFormatRank;
85 }; 84 };
86 85
87 bool pf_less(const PixelFormat& a, const PixelFormat& b) { 86 bool pf_less(const PixelFormat& a, const PixelFormat& b) {
88 if (a.fCoverageSamples < b.fCoverageSamples) { 87 if (a.fSampleCnt < b.fSampleCnt) {
89 return true; 88 return true;
90 } else if (b.fCoverageSamples < a.fCoverageSamples) { 89 } else if (b.fSampleCnt < a.fSampleCnt) {
91 return false;
92 } else if (a.fColorSamples < b.fColorSamples) {
93 return true;
94 } else if (b.fColorSamples < a.fColorSamples) {
95 return false; 90 return false;
96 } else if (a.fChoosePixelFormatRank < b.fChoosePixelFormatRank) { 91 } else if (a.fChoosePixelFormatRank < b.fChoosePixelFormatRank) {
97 return true; 92 return true;
98 } 93 }
99 return false; 94 return false;
100 } 95 }
101 } 96 }
102 97
103 int SkWGLExtensions::selectFormat(const int formats[], 98 int SkWGLExtensions::selectFormat(const int formats[],
104 int formatCount, 99 int formatCount,
105 HDC dc, 100 HDC dc,
106 int desiredSampleCount) { 101 int desiredSampleCount) {
107 PixelFormat desiredFormat = { 102 PixelFormat desiredFormat = {
108 0, 103 0,
109 desiredSampleCount, 104 desiredSampleCount,
110 0, 105 0,
111 0,
112 }; 106 };
113 SkTDArray<PixelFormat> rankedFormats; 107 SkTDArray<PixelFormat> rankedFormats;
114 rankedFormats.setCount(formatCount); 108 rankedFormats.setCount(formatCount);
115 bool supportsCoverage = this->hasExtension(dc,
116 "WGL_NV_multisample_coverage");
117 for (int i = 0; i < formatCount; ++i) { 109 for (int i = 0; i < formatCount; ++i) {
118 static const int queryAttrs[] = { 110 static const int kQueryAttr = SK_WGL_SAMPLES;
119 SK_WGL_COVERAGE_SAMPLES, 111 int numSamples;
120 // Keep COLOR_SAMPLES at the end so it can be skipped
121 SK_WGL_COLOR_SAMPLES,
122 };
123 int answers[2];
124 int queryAttrCnt = supportsCoverage ?
125 SK_ARRAY_COUNT(queryAttrs) :
126 SK_ARRAY_COUNT(queryAttrs) - 1;
127 this->getPixelFormatAttribiv(dc, 112 this->getPixelFormatAttribiv(dc,
128 formats[i], 113 formats[i],
129 0, 114 0,
130 queryAttrCnt, 115 1,
131 queryAttrs, 116 &kQueryAttr,
132 answers); 117 &numSamples);
133 rankedFormats[i].fFormat = formats[i]; 118 rankedFormats[i].fFormat = formats[i];
134 rankedFormats[i].fCoverageSamples = answers[0]; 119 rankedFormats[i].fSampleCnt = numSamples;
135 rankedFormats[i].fColorSamples = answers[supportsCoverage ? 1 : 0];
136 rankedFormats[i].fChoosePixelFormatRank = i; 120 rankedFormats[i].fChoosePixelFormatRank = i;
137 } 121 }
138 SkTQSort(rankedFormats.begin(), 122 SkTQSort(rankedFormats.begin(),
139 rankedFormats.begin() + rankedFormats.count() - 1, 123 rankedFormats.begin() + rankedFormats.count() - 1,
140 SkTLessFunctionToFunctorAdaptor<PixelFormat, pf_less>()); 124 SkTLessFunctionToFunctorAdaptor<PixelFormat, pf_less>());
141 int idx = SkTSearch<PixelFormat, pf_less>(rankedFormats.begin(), 125 int idx = SkTSearch<PixelFormat, pf_less>(rankedFormats.begin(),
142 rankedFormats.count(), 126 rankedFormats.count(),
143 desiredFormat, 127 desiredFormat,
144 sizeof(PixelFormat)); 128 sizeof(PixelFormat));
145 if (idx < 0) { 129 if (idx < 0) {
(...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after
282 SK_WGL_ALPHA_BITS, 8, 266 SK_WGL_ALPHA_BITS, 8,
283 SK_WGL_STENCIL_BITS, 8, 267 SK_WGL_STENCIL_BITS, 8,
284 0, 0 268 0, 0
285 }; 269 };
286 270
287 float fAttrs[] = {0, 0}; 271 float fAttrs[] = {0, 0};
288 272
289 if (msaaSampleCount > 0 && 273 if (msaaSampleCount > 0 &&
290 extensions.hasExtension(dc, "WGL_ARB_multisample")) { 274 extensions.hasExtension(dc, "WGL_ARB_multisample")) {
291 static const int kIAttrsCount = SK_ARRAY_COUNT(iAttrs); 275 static const int kIAttrsCount = SK_ARRAY_COUNT(iAttrs);
292 int msaaIAttrs[kIAttrsCount + 6]; 276 int msaaIAttrs[kIAttrsCount + 4];
293 memcpy(msaaIAttrs, iAttrs, sizeof(int) * kIAttrsCount); 277 memcpy(msaaIAttrs, iAttrs, sizeof(int) * kIAttrsCount);
294 SkASSERT(0 == msaaIAttrs[kIAttrsCount - 2] && 278 SkASSERT(0 == msaaIAttrs[kIAttrsCount - 2] &&
295 0 == msaaIAttrs[kIAttrsCount - 1]); 279 0 == msaaIAttrs[kIAttrsCount - 1]);
296 msaaIAttrs[kIAttrsCount - 2] = SK_WGL_SAMPLE_BUFFERS; 280 msaaIAttrs[kIAttrsCount - 2] = SK_WGL_SAMPLE_BUFFERS;
297 msaaIAttrs[kIAttrsCount - 1] = TRUE; 281 msaaIAttrs[kIAttrsCount - 1] = TRUE;
298 msaaIAttrs[kIAttrsCount + 0] = SK_WGL_SAMPLES; 282 msaaIAttrs[kIAttrsCount + 0] = SK_WGL_SAMPLES;
299 msaaIAttrs[kIAttrsCount + 1] = msaaSampleCount; 283 msaaIAttrs[kIAttrsCount + 1] = msaaSampleCount;
300 if (extensions.hasExtension(dc, "WGL_NV_multisample_coverage")) { 284 msaaIAttrs[kIAttrsCount + 2] = 0;
301 msaaIAttrs[kIAttrsCount + 2] = SK_WGL_COLOR_SAMPLES; 285 msaaIAttrs[kIAttrsCount + 3] = 0;
302 // We want the fewest number of color samples possible.
303 // Passing 0 gives only the formats where all samples are color
304 // samples.
305 msaaIAttrs[kIAttrsCount + 3] = 1;
306 msaaIAttrs[kIAttrsCount + 4] = 0;
307 msaaIAttrs[kIAttrsCount + 5] = 0;
308 } else {
309 msaaIAttrs[kIAttrsCount + 2] = 0;
310 msaaIAttrs[kIAttrsCount + 3] = 0;
311 }
312 unsigned int num; 286 unsigned int num;
313 int formats[64]; 287 int formats[64];
314 extensions.choosePixelFormat(dc, msaaIAttrs, fAttrs, 64, formats, &num); 288 extensions.choosePixelFormat(dc, msaaIAttrs, fAttrs, 64, formats, &num);
315 num = SkTMin(num, 64U); 289 num = SkTMin(num, 64U);
316 int formatToTry = extensions.selectFormat(formats, 290 int formatToTry = extensions.selectFormat(formats,
317 num, 291 num,
318 dc, 292 dc,
319 msaaSampleCount); 293 msaaSampleCount);
320 DescribePixelFormat(dc, formatToTry, sizeof(pfd), &pfd); 294 DescribePixelFormat(dc, formatToTry, sizeof(pfd), &pfd);
321 if (SetPixelFormat(dc, formatToTry, &pfd)) { 295 if (SetPixelFormat(dc, formatToTry, &pfd)) {
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
359 } 333 }
360 334
361 if (NULL == glrc) { 335 if (NULL == glrc) {
362 glrc = wglCreateContext(dc); 336 glrc = wglCreateContext(dc);
363 } 337 }
364 SkASSERT(glrc); 338 SkASSERT(glrc);
365 339
366 wglMakeCurrent(prevDC, prevGLRC); 340 wglMakeCurrent(prevDC, prevGLRC);
367 return glrc; 341 return glrc;
368 } 342 }
OLDNEW
« no previous file with comments | « src/gpu/gl/win/GrGLCreateNativeInterface_win.cpp ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698