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

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

Issue 15070011: One SkTSearch to rule them all. Allow key to be of different type than the array. (Closed) Base URL: https://skia.googlecode.com/svn/trunk
Patch Set: fixes to compile on gcc Created 7 years, 7 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/effects/GrTextureStripAtlas.cpp ('k') | src/gpu/gl/GrGLExtensions.cpp » ('j') | 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 2012 Google Inc. 2 * Copyright 2012 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 "GrGLCaps.h" 9 #include "GrGLCaps.h"
10 #include "GrGLContext.h" 10 #include "GrGLContext.h"
11 #include "SkTSearch.h" 11 #include "SkTSearch.h"
12 #include "SkTSort.h"
12 13
13 SK_DEFINE_INST_COUNT(GrGLCaps) 14 SK_DEFINE_INST_COUNT(GrGLCaps)
14 15
15 GrGLCaps::GrGLCaps() { 16 GrGLCaps::GrGLCaps() {
16 this->reset(); 17 this->reset();
17 } 18 }
18 19
19 void GrGLCaps::reset() { 20 void GrGLCaps::reset() {
20 INHERITED::reset(); 21 INHERITED::reset();
21 22
(...skipping 306 matching lines...) Expand 10 before | Expand all | Expand 10 after
328 &otherFormat); 329 &otherFormat);
329 330
330 GR_GL_GetIntegerv(intf, 331 GR_GL_GetIntegerv(intf,
331 GR_GL_IMPLEMENTATION_COLOR_READ_TYPE, 332 GR_GL_IMPLEMENTATION_COLOR_READ_TYPE,
332 &otherType); 333 &otherType);
333 334
334 return (GrGLenum)otherFormat == format && (GrGLenum)otherType == type; 335 return (GrGLenum)otherFormat == format && (GrGLenum)otherType == type;
335 } 336 }
336 337
337 namespace { 338 namespace {
338 int coverage_mode_compare(const GrGLCaps::MSAACoverageMode* left, 339 bool cov_mode_less(const GrGLCaps::MSAACoverageMode& left,
339 const GrGLCaps::MSAACoverageMode* right) { 340 const GrGLCaps::MSAACoverageMode& right) {
340 if (left->fCoverageSampleCnt < right->fCoverageSampleCnt) { 341 if (left.fCoverageSampleCnt < right.fCoverageSampleCnt) {
341 return -1; 342 return true;
342 } else if (right->fCoverageSampleCnt < left->fCoverageSampleCnt) { 343 } else if (right.fCoverageSampleCnt < left.fCoverageSampleCnt) {
343 return 1; 344 return false;
344 } else if (left->fColorSampleCnt < right->fColorSampleCnt) { 345 } else if (left.fColorSampleCnt < right.fColorSampleCnt) {
345 return -1; 346 return true;
346 } else if (right->fColorSampleCnt < left->fColorSampleCnt) {
347 return 1;
348 } 347 }
349 return 0; 348 return false;
350 } 349 }
351 } 350 }
352 351
353 void GrGLCaps::initFSAASupport(const GrGLContextInfo& ctxInfo, const GrGLInterfa ce* gli) { 352 void GrGLCaps::initFSAASupport(const GrGLContextInfo& ctxInfo, const GrGLInterfa ce* gli) {
354 353
355 fMSFBOType = kNone_MSFBOType; 354 fMSFBOType = kNone_MSFBOType;
356 if (kDesktop_GrGLBinding != ctxInfo.binding()) { 355 if (kDesktop_GrGLBinding != ctxInfo.binding()) {
357 if (ctxInfo.hasExtension("GL_CHROMIUM_framebuffer_multisample")) { 356 if (ctxInfo.hasExtension("GL_CHROMIUM_framebuffer_multisample")) {
358 // chrome's extension is equivalent to the EXT msaa 357 // chrome's extension is equivalent to the EXT msaa
359 // and fbo_blit extensions. 358 // and fbo_blit extensions.
(...skipping 22 matching lines...) Expand all
382 GrGLint count; 381 GrGLint count;
383 GR_GL_GetIntegerv(gli, 382 GR_GL_GetIntegerv(gli,
384 GR_GL_MAX_MULTISAMPLE_COVERAGE_MODES, 383 GR_GL_MAX_MULTISAMPLE_COVERAGE_MODES,
385 &count); 384 &count);
386 fMSAACoverageModes.setCount(count); 385 fMSAACoverageModes.setCount(count);
387 GR_GL_GetIntegerv(gli, 386 GR_GL_GetIntegerv(gli,
388 GR_GL_MULTISAMPLE_COVERAGE_MODES, 387 GR_GL_MULTISAMPLE_COVERAGE_MODES,
389 (int*)&fMSAACoverageModes[0]); 388 (int*)&fMSAACoverageModes[0]);
390 // The NV driver seems to return the modes already sorted but the 389 // The NV driver seems to return the modes already sorted but the
391 // spec doesn't require this. So we sort. 390 // spec doesn't require this. So we sort.
392 qsort(&fMSAACoverageModes[0], 391 typedef SkTLessFunctionToFunctorAdaptor<MSAACoverageMode, cov_mode_l ess> SortFunctor;
393 count, 392 SortFunctor sortFunctor;
394 sizeof(MSAACoverageMode), 393 SkTQSort<MSAACoverageMode, SortFunctor>(fMSAACoverageModes.begin(),
395 SkCastForQSort(coverage_mode_compare)); 394 fMSAACoverageModes.end() - 1 ,
395 sortFunctor);
396 } 396 }
397 } 397 }
398 } 398 }
399 399
400 const GrGLCaps::MSAACoverageMode& GrGLCaps::getMSAACoverageMode(int desiredSampl eCount) const { 400 const GrGLCaps::MSAACoverageMode& GrGLCaps::getMSAACoverageMode(int desiredSampl eCount) const {
401 static const MSAACoverageMode kNoneMode = {0, 0}; 401 static const MSAACoverageMode kNoneMode = {0, 0};
402 if (0 == fMSAACoverageModes.count()) { 402 if (0 == fMSAACoverageModes.count()) {
403 return kNoneMode; 403 return kNoneMode;
404 } else { 404 } else {
405 GrAssert(kNone_CoverageAAType != fCoverageAAType); 405 GrAssert(kNone_CoverageAAType != fCoverageAAType);
406 int max = (fMSAACoverageModes.end() - 1)->fCoverageSampleCnt; 406 int max = (fMSAACoverageModes.end() - 1)->fCoverageSampleCnt;
407 desiredSampleCount = GrMin(desiredSampleCount, max); 407 desiredSampleCount = GrMin(desiredSampleCount, max);
408 MSAACoverageMode desiredMode = {desiredSampleCount, 0}; 408 MSAACoverageMode desiredMode = {desiredSampleCount, 0};
409 int idx = SkTSearch<MSAACoverageMode>(&fMSAACoverageModes[0], 409 int idx = SkTSearch<const MSAACoverageMode, cov_mode_less>(&fMSAACoverag eModes[0],
410 fMSAACoverageModes.count(), 410 fMSAACoverage Modes.count(),
411 desiredMode, 411 desiredMode,
412 sizeof(MSAACoverageMode), 412 sizeof(MSAACo verageMode));
413 &coverage_mode_compare);
414 if (idx < 0) { 413 if (idx < 0) {
415 idx = ~idx; 414 idx = ~idx;
416 } 415 }
417 GrAssert(idx >= 0 && idx < fMSAACoverageModes.count()); 416 GrAssert(idx >= 0 && idx < fMSAACoverageModes.count());
418 return fMSAACoverageModes[idx]; 417 return fMSAACoverageModes[idx];
419 } 418 }
420 } 419 }
421 420
422 namespace { 421 namespace {
423 const GrGLuint kUnknownBitCount = GrGLStencilBuffer::kUnknownBitCount; 422 const GrGLuint kUnknownBitCount = GrGLStencilBuffer::kUnknownBitCount;
(...skipping 155 matching lines...) Expand 10 before | Expand all | Expand 10 after
579 GrPrintf("GL_ARB_imaging support: %s\n", (fImagingSupport ? "YES": "NO")); 578 GrPrintf("GL_ARB_imaging support: %s\n", (fImagingSupport ? "YES": "NO"));
580 GrPrintf("Two Format Limit: %s\n", (fTwoFormatLimit ? "YES": "NO")); 579 GrPrintf("Two Format Limit: %s\n", (fTwoFormatLimit ? "YES": "NO"));
581 GrPrintf("Fragment coord conventions support: %s\n", 580 GrPrintf("Fragment coord conventions support: %s\n",
582 (fFragCoordsConventionSupport ? "YES": "NO")); 581 (fFragCoordsConventionSupport ? "YES": "NO"));
583 GrPrintf("Vertex array object support: %s\n", (fVertexArrayObjectSupport ? " YES": "NO")); 582 GrPrintf("Vertex array object support: %s\n", (fVertexArrayObjectSupport ? " YES": "NO"));
584 GrPrintf("Use non-VBO for dynamic data: %s\n", 583 GrPrintf("Use non-VBO for dynamic data: %s\n",
585 (fUseNonVBOVertexAndIndexDynamicData ? "YES" : "NO")); 584 (fUseNonVBOVertexAndIndexDynamicData ? "YES" : "NO"));
586 GrPrintf("Core Profile: %s\n", (fIsCoreProfile ? "YES" : "NO")); 585 GrPrintf("Core Profile: %s\n", (fIsCoreProfile ? "YES" : "NO"));
587 GrPrintf("Discard FrameBuffer support: %s\n", (fDiscardFBSupport ? "YES" : " NO")); 586 GrPrintf("Discard FrameBuffer support: %s\n", (fDiscardFBSupport ? "YES" : " NO"));
588 } 587 }
OLDNEW
« no previous file with comments | « src/gpu/effects/GrTextureStripAtlas.cpp ('k') | src/gpu/gl/GrGLExtensions.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698