OLD | NEW |
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 359 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
370 return true; | 370 return true; |
371 } | 371 } |
372 return false; | 372 return false; |
373 } | 373 } |
374 } | 374 } |
375 | 375 |
376 void GrGLCaps::initFSAASupport(const GrGLContextInfo& ctxInfo, const GrGLInterfa
ce* gli) { | 376 void GrGLCaps::initFSAASupport(const GrGLContextInfo& ctxInfo, const GrGLInterfa
ce* gli) { |
377 | 377 |
378 fMSFBOType = kNone_MSFBOType; | 378 fMSFBOType = kNone_MSFBOType; |
379 if (kDesktop_GrGLBinding != ctxInfo.binding()) { | 379 if (kDesktop_GrGLBinding != ctxInfo.binding()) { |
380 if (ctxInfo.hasExtension("GL_CHROMIUM_framebuffer_multisample")) { | 380 // We prefer the EXT/IMG extension over ES3 MSAA because we've observed |
381 // chrome's extension is equivalent to the EXT msaa | 381 // ES3 driver bugs on at least one device with a tiled GPU (N10). |
382 // and fbo_blit extensions. | 382 if (ctxInfo.hasExtension("GL_EXT_multisampled_render_to_texture")) { |
383 fMSFBOType = kDesktop_EXT_MSFBOType; | 383 fMSFBOType = kES_EXT_MsToTexture_MSFBOType; |
384 } else if (ctxInfo.hasExtension("GL_APPLE_framebuffer_multisample")) { | 384 } else if (ctxInfo.hasExtension("GL_IMG_multisampled_render_to_texture")
) { |
385 fMSFBOType = kES_Apple_MSFBOType; | 385 fMSFBOType = kES_IMG_MsToTexture_MSFBOType; |
386 } else if (ctxInfo.hasExtension("GL_EXT_multisampled_render_to_texture"))
{ | 386 } else if (!GR_GL_IGNORE_ES3_MSAA && ctxInfo.version() >= GR_GL_VER(3,0)
) { |
387 fMSFBOType = kES_EXT_MsToTexture_MSFBOType; | 387 fMSFBOType = GrGLCaps::kES_3_0_MSFBOType; |
388 } else if (ctxInfo.hasExtension("GL_IMG_multisampled_render_to_texture"))
{ | 388 } else if (ctxInfo.hasExtension("GL_CHROMIUM_framebuffer_multisample"))
{ |
389 fMSFBOType = kES_IMG_MsToTexture_MSFBOType; | 389 // chrome's extension is equivalent to the EXT msaa |
390 } | 390 // and fbo_blit extensions. |
| 391 fMSFBOType = kDesktop_EXT_MSFBOType; |
| 392 } else if (ctxInfo.hasExtension("GL_APPLE_framebuffer_multisample")) { |
| 393 fMSFBOType = kES_Apple_MSFBOType; |
| 394 } |
391 } else { | 395 } else { |
392 if ((ctxInfo.version() >= GR_GL_VER(3,0)) || | 396 if ((ctxInfo.version() >= GR_GL_VER(3,0)) || |
393 ctxInfo.hasExtension("GL_ARB_framebuffer_object")) { | 397 ctxInfo.hasExtension("GL_ARB_framebuffer_object")) { |
394 fMSFBOType = GrGLCaps::kDesktop_ARB_MSFBOType; | 398 fMSFBOType = GrGLCaps::kDesktop_ARB_MSFBOType; |
395 } else if (ctxInfo.hasExtension("GL_EXT_framebuffer_multisample") && | 399 } else if (ctxInfo.hasExtension("GL_EXT_framebuffer_multisample") && |
396 ctxInfo.hasExtension("GL_EXT_framebuffer_blit")) { | 400 ctxInfo.hasExtension("GL_EXT_framebuffer_blit")) { |
397 fMSFBOType = GrGLCaps::kDesktop_EXT_MSFBOType; | 401 fMSFBOType = GrGLCaps::kDesktop_EXT_MSFBOType; |
398 } | 402 } |
399 // TODO: We could populate fMSAACoverageModes using GetInternalformativ | 403 // TODO: We could populate fMSAACoverageModes using GetInternalformativ |
400 // on GL 4.2+. It's format-specific, though. See also | 404 // on GL 4.2+. It's format-specific, though. See also |
(...skipping 152 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
553 GrPrintf("Stencil Format %d, stencil bits: %02d, total bits: %02d\n", | 557 GrPrintf("Stencil Format %d, stencil bits: %02d, total bits: %02d\n", |
554 i, | 558 i, |
555 fStencilFormats[i].fStencilBits, | 559 fStencilFormats[i].fStencilBits, |
556 fStencilFormats[i].fTotalBits); | 560 fStencilFormats[i].fTotalBits); |
557 } | 561 } |
558 | 562 |
559 static const char* kMSFBOExtStr[] = { | 563 static const char* kMSFBOExtStr[] = { |
560 "None", | 564 "None", |
561 "ARB", | 565 "ARB", |
562 "EXT", | 566 "EXT", |
| 567 "ES 3.0", |
563 "Apple", | 568 "Apple", |
564 "IMG MS To Texture", | 569 "IMG MS To Texture", |
565 "EXT MS To Texture", | 570 "EXT MS To Texture", |
566 }; | 571 }; |
567 GR_STATIC_ASSERT(0 == kNone_MSFBOType); | 572 GR_STATIC_ASSERT(0 == kNone_MSFBOType); |
568 GR_STATIC_ASSERT(1 == kDesktop_ARB_MSFBOType); | 573 GR_STATIC_ASSERT(1 == kDesktop_ARB_MSFBOType); |
569 GR_STATIC_ASSERT(2 == kDesktop_EXT_MSFBOType); | 574 GR_STATIC_ASSERT(2 == kDesktop_EXT_MSFBOType); |
570 GR_STATIC_ASSERT(3 == kES_Apple_MSFBOType); | 575 GR_STATIC_ASSERT(3 == kES_3_0_MSFBOType); |
571 GR_STATIC_ASSERT(4 == kES_IMG_MsToTexture_MSFBOType); | 576 GR_STATIC_ASSERT(4 == kES_Apple_MSFBOType); |
572 GR_STATIC_ASSERT(5 == kES_EXT_MsToTexture_MSFBOType); | 577 GR_STATIC_ASSERT(5 == kES_IMG_MsToTexture_MSFBOType); |
| 578 GR_STATIC_ASSERT(6 == kES_EXT_MsToTexture_MSFBOType); |
573 GR_STATIC_ASSERT(GR_ARRAY_COUNT(kMSFBOExtStr) == kLast_MSFBOType + 1); | 579 GR_STATIC_ASSERT(GR_ARRAY_COUNT(kMSFBOExtStr) == kLast_MSFBOType + 1); |
574 | 580 |
575 static const char* kFBFetchTypeStr[] = { | 581 static const char* kFBFetchTypeStr[] = { |
576 "None", | 582 "None", |
577 "EXT", | 583 "EXT", |
578 "NV", | 584 "NV", |
579 }; | 585 }; |
580 GR_STATIC_ASSERT(0 == kNone_FBFetchType); | 586 GR_STATIC_ASSERT(0 == kNone_FBFetchType); |
581 GR_STATIC_ASSERT(1 == kEXT_FBFetchType); | 587 GR_STATIC_ASSERT(1 == kEXT_FBFetchType); |
582 GR_STATIC_ASSERT(2 == kNV_FBFetchType); | 588 GR_STATIC_ASSERT(2 == kNV_FBFetchType); |
(...skipping 19 matching lines...) Expand all Loading... |
602 GrPrintf("GL_ARB_imaging support: %s\n", (fImagingSupport ? "YES": "NO")); | 608 GrPrintf("GL_ARB_imaging support: %s\n", (fImagingSupport ? "YES": "NO")); |
603 GrPrintf("Two Format Limit: %s\n", (fTwoFormatLimit ? "YES": "NO")); | 609 GrPrintf("Two Format Limit: %s\n", (fTwoFormatLimit ? "YES": "NO")); |
604 GrPrintf("Fragment coord conventions support: %s\n", | 610 GrPrintf("Fragment coord conventions support: %s\n", |
605 (fFragCoordsConventionSupport ? "YES": "NO")); | 611 (fFragCoordsConventionSupport ? "YES": "NO")); |
606 GrPrintf("Vertex array object support: %s\n", (fVertexArrayObjectSupport ? "
YES": "NO")); | 612 GrPrintf("Vertex array object support: %s\n", (fVertexArrayObjectSupport ? "
YES": "NO")); |
607 GrPrintf("Use non-VBO for dynamic data: %s\n", | 613 GrPrintf("Use non-VBO for dynamic data: %s\n", |
608 (fUseNonVBOVertexAndIndexDynamicData ? "YES" : "NO")); | 614 (fUseNonVBOVertexAndIndexDynamicData ? "YES" : "NO")); |
609 GrPrintf("Core Profile: %s\n", (fIsCoreProfile ? "YES" : "NO")); | 615 GrPrintf("Core Profile: %s\n", (fIsCoreProfile ? "YES" : "NO")); |
610 GrPrintf("Discard FrameBuffer support: %s\n", (fDiscardFBSupport ? "YES" : "
NO")); | 616 GrPrintf("Discard FrameBuffer support: %s\n", (fDiscardFBSupport ? "YES" : "
NO")); |
611 } | 617 } |
OLD | NEW |