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

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

Issue 23404002: Add support for ES3 MSAA. (Closed) Base URL: http://skia.googlecode.com/svn/trunk/
Patch Set: rebase and comments 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/GrGLCaps.h ('k') | src/gpu/gl/GrGLInterface.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"
(...skipping 368 matching lines...) Expand 10 before | Expand all | Expand 10 after
379 return true; 379 return true;
380 } 380 }
381 return false; 381 return false;
382 } 382 }
383 } 383 }
384 384
385 void GrGLCaps::initFSAASupport(const GrGLContextInfo& ctxInfo, const GrGLInterfa ce* gli) { 385 void GrGLCaps::initFSAASupport(const GrGLContextInfo& ctxInfo, const GrGLInterfa ce* gli) {
386 386
387 fMSFBOType = kNone_MSFBOType; 387 fMSFBOType = kNone_MSFBOType;
388 if (kDesktop_GrGLBinding != ctxInfo.binding()) { 388 if (kDesktop_GrGLBinding != ctxInfo.binding()) {
389 if (ctxInfo.hasExtension("GL_CHROMIUM_framebuffer_multisample")) { 389 // We prefer the EXT/IMG extension over ES3 MSAA because we've observed
390 // chrome's extension is equivalent to the EXT msaa 390 // ES3 driver bugs on at least one device with a tiled GPU (N10).
391 // and fbo_blit extensions. 391 if (ctxInfo.hasExtension("GL_EXT_multisampled_render_to_texture")) {
392 fMSFBOType = kDesktop_EXT_MSFBOType; 392 fMSFBOType = kES_EXT_MsToTexture_MSFBOType;
393 } else if (ctxInfo.hasExtension("GL_APPLE_framebuffer_multisample")) { 393 } else if (ctxInfo.hasExtension("GL_IMG_multisampled_render_to_texture") ) {
394 fMSFBOType = kES_Apple_MSFBOType; 394 fMSFBOType = kES_IMG_MsToTexture_MSFBOType;
395 } else if (ctxInfo.hasExtension("GL_EXT_multisampled_render_to_texture")) { 395 } else if (!GR_GL_IGNORE_ES3_MSAA && ctxInfo.version() >= GR_GL_VER(3,0) ) {
396 fMSFBOType = kES_EXT_MsToTexture_MSFBOType; 396 fMSFBOType = GrGLCaps::kES_3_0_MSFBOType;
397 } else if (ctxInfo.hasExtension("GL_IMG_multisampled_render_to_texture")) { 397 } else if (ctxInfo.hasExtension("GL_CHROMIUM_framebuffer_multisample")) {
398 fMSFBOType = kES_IMG_MsToTexture_MSFBOType; 398 // chrome's extension is equivalent to the EXT msaa
399 } 399 // and fbo_blit extensions.
400 fMSFBOType = kDesktop_EXT_MSFBOType;
401 } else if (ctxInfo.hasExtension("GL_APPLE_framebuffer_multisample")) {
402 fMSFBOType = kES_Apple_MSFBOType;
403 }
400 } else { 404 } else {
401 if ((ctxInfo.version() >= GR_GL_VER(3,0)) || 405 if ((ctxInfo.version() >= GR_GL_VER(3,0)) ||
402 ctxInfo.hasExtension("GL_ARB_framebuffer_object")) { 406 ctxInfo.hasExtension("GL_ARB_framebuffer_object")) {
403 fMSFBOType = GrGLCaps::kDesktop_ARB_MSFBOType; 407 fMSFBOType = GrGLCaps::kDesktop_ARB_MSFBOType;
404 } else if (ctxInfo.hasExtension("GL_EXT_framebuffer_multisample") && 408 } else if (ctxInfo.hasExtension("GL_EXT_framebuffer_multisample") &&
405 ctxInfo.hasExtension("GL_EXT_framebuffer_blit")) { 409 ctxInfo.hasExtension("GL_EXT_framebuffer_blit")) {
406 fMSFBOType = GrGLCaps::kDesktop_EXT_MSFBOType; 410 fMSFBOType = GrGLCaps::kDesktop_EXT_MSFBOType;
407 } 411 }
408 // TODO: We could populate fMSAACoverageModes using GetInternalformativ 412 // TODO: We could populate fMSAACoverageModes using GetInternalformativ
409 // on GL 4.2+. It's format-specific, though. See also 413 // on GL 4.2+. It's format-specific, though. See also
(...skipping 152 matching lines...) Expand 10 before | Expand all | Expand 10 after
562 GrPrintf("Stencil Format %d, stencil bits: %02d, total bits: %02d\n", 566 GrPrintf("Stencil Format %d, stencil bits: %02d, total bits: %02d\n",
563 i, 567 i,
564 fStencilFormats[i].fStencilBits, 568 fStencilFormats[i].fStencilBits,
565 fStencilFormats[i].fTotalBits); 569 fStencilFormats[i].fTotalBits);
566 } 570 }
567 571
568 static const char* kMSFBOExtStr[] = { 572 static const char* kMSFBOExtStr[] = {
569 "None", 573 "None",
570 "ARB", 574 "ARB",
571 "EXT", 575 "EXT",
576 "ES 3.0",
572 "Apple", 577 "Apple",
573 "IMG MS To Texture", 578 "IMG MS To Texture",
574 "EXT MS To Texture", 579 "EXT MS To Texture",
575 }; 580 };
576 GR_STATIC_ASSERT(0 == kNone_MSFBOType); 581 GR_STATIC_ASSERT(0 == kNone_MSFBOType);
577 GR_STATIC_ASSERT(1 == kDesktop_ARB_MSFBOType); 582 GR_STATIC_ASSERT(1 == kDesktop_ARB_MSFBOType);
578 GR_STATIC_ASSERT(2 == kDesktop_EXT_MSFBOType); 583 GR_STATIC_ASSERT(2 == kDesktop_EXT_MSFBOType);
579 GR_STATIC_ASSERT(3 == kES_Apple_MSFBOType); 584 GR_STATIC_ASSERT(3 == kES_3_0_MSFBOType);
580 GR_STATIC_ASSERT(4 == kES_IMG_MsToTexture_MSFBOType); 585 GR_STATIC_ASSERT(4 == kES_Apple_MSFBOType);
581 GR_STATIC_ASSERT(5 == kES_EXT_MsToTexture_MSFBOType); 586 GR_STATIC_ASSERT(5 == kES_IMG_MsToTexture_MSFBOType);
587 GR_STATIC_ASSERT(6 == kES_EXT_MsToTexture_MSFBOType);
582 GR_STATIC_ASSERT(GR_ARRAY_COUNT(kMSFBOExtStr) == kLast_MSFBOType + 1); 588 GR_STATIC_ASSERT(GR_ARRAY_COUNT(kMSFBOExtStr) == kLast_MSFBOType + 1);
583 589
584 static const char* kFBFetchTypeStr[] = { 590 static const char* kFBFetchTypeStr[] = {
585 "None", 591 "None",
586 "EXT", 592 "EXT",
587 "NV", 593 "NV",
588 }; 594 };
589 GR_STATIC_ASSERT(0 == kNone_FBFetchType); 595 GR_STATIC_ASSERT(0 == kNone_FBFetchType);
590 GR_STATIC_ASSERT(1 == kEXT_FBFetchType); 596 GR_STATIC_ASSERT(1 == kEXT_FBFetchType);
591 GR_STATIC_ASSERT(2 == kNV_FBFetchType); 597 GR_STATIC_ASSERT(2 == kNV_FBFetchType);
(...skipping 24 matching lines...) Expand all
616 GrPrintf("GL_R support: %s\n", (fTextureRedSupport ? "YES": "NO")); 622 GrPrintf("GL_R support: %s\n", (fTextureRedSupport ? "YES": "NO"));
617 GrPrintf("GL_ARB_imaging support: %s\n", (fImagingSupport ? "YES": "NO")); 623 GrPrintf("GL_ARB_imaging support: %s\n", (fImagingSupport ? "YES": "NO"));
618 GrPrintf("Two Format Limit: %s\n", (fTwoFormatLimit ? "YES": "NO")); 624 GrPrintf("Two Format Limit: %s\n", (fTwoFormatLimit ? "YES": "NO"));
619 GrPrintf("Fragment coord conventions support: %s\n", 625 GrPrintf("Fragment coord conventions support: %s\n",
620 (fFragCoordsConventionSupport ? "YES": "NO")); 626 (fFragCoordsConventionSupport ? "YES": "NO"));
621 GrPrintf("Vertex array object support: %s\n", (fVertexArrayObjectSupport ? " YES": "NO")); 627 GrPrintf("Vertex array object support: %s\n", (fVertexArrayObjectSupport ? " YES": "NO"));
622 GrPrintf("Use non-VBO for dynamic data: %s\n", 628 GrPrintf("Use non-VBO for dynamic data: %s\n",
623 (fUseNonVBOVertexAndIndexDynamicData ? "YES" : "NO")); 629 (fUseNonVBOVertexAndIndexDynamicData ? "YES" : "NO"));
624 GrPrintf("Discard FrameBuffer support: %s\n", (fDiscardFBSupport ? "YES" : " NO")); 630 GrPrintf("Discard FrameBuffer support: %s\n", (fDiscardFBSupport ? "YES" : " NO"));
625 } 631 }
OLDNEW
« no previous file with comments | « src/gpu/gl/GrGLCaps.h ('k') | src/gpu/gl/GrGLInterface.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698