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 | 10 |
(...skipping 773 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
784 ctxInfo.hasExtension("GL_ARB_framebuffer_object")) { | 784 ctxInfo.hasExtension("GL_ARB_framebuffer_object")) { |
785 fMSFBOType = GrGLCaps::kDesktop_ARB_MSFBOType; | 785 fMSFBOType = GrGLCaps::kDesktop_ARB_MSFBOType; |
786 } else if (ctxInfo.hasExtension("GL_EXT_framebuffer_multisample") && | 786 } else if (ctxInfo.hasExtension("GL_EXT_framebuffer_multisample") && |
787 ctxInfo.hasExtension("GL_EXT_framebuffer_blit")) { | 787 ctxInfo.hasExtension("GL_EXT_framebuffer_blit")) { |
788 fMSFBOType = GrGLCaps::kDesktop_EXT_MSFBOType; | 788 fMSFBOType = GrGLCaps::kDesktop_EXT_MSFBOType; |
789 } | 789 } |
790 } | 790 } |
791 } | 791 } |
792 | 792 |
793 namespace { | 793 namespace { |
794 const GrGLuint kUnknownBitCount = GrGLStencilBuffer::kUnknownBitCount; | 794 const GrGLuint kUnknownBitCount = GrGLStencilAttachment::kUnknownBitCount; |
795 } | 795 } |
796 | 796 |
797 void GrGLCaps::initStencilFormats(const GrGLContextInfo& ctxInfo) { | 797 void GrGLCaps::initStencilFormats(const GrGLContextInfo& ctxInfo) { |
798 | 798 |
799 // Build up list of legal stencil formats (though perhaps not supported on | 799 // Build up list of legal stencil formats (though perhaps not supported on |
800 // the particular gpu/driver) from most preferred to least. | 800 // the particular gpu/driver) from most preferred to least. |
801 | 801 |
802 // these consts are in order of most preferred to least preferred | 802 // these consts are in order of most preferred to least preferred |
803 // we don't bother with GL_STENCIL_INDEX1 or GL_DEPTH32F_STENCIL8 | 803 // we don't bother with GL_STENCIL_INDEX1 or GL_DEPTH32F_STENCIL8 |
804 | 804 |
(...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
922 if (fGeometryShaderSupport) { | 922 if (fGeometryShaderSupport) { |
923 for (int p = 0; p < kGrSLPrecisionCount; ++p) { | 923 for (int p = 0; p < kGrSLPrecisionCount; ++p) { |
924 fFloatPrecisions[kGeometry_GrShaderType][p] = fFloatPrecisions[kVert
ex_GrShaderType][p]; | 924 fFloatPrecisions[kGeometry_GrShaderType][p] = fFloatPrecisions[kVert
ex_GrShaderType][p]; |
925 } | 925 } |
926 } | 926 } |
927 } | 927 } |
928 | 928 |
929 | 929 |
930 void GrGLCaps::markColorConfigAndStencilFormatAsVerified( | 930 void GrGLCaps::markColorConfigAndStencilFormatAsVerified( |
931 GrPixelConfig config, | 931 GrPixelConfig config, |
932 const GrGLStencilBuffer::Format& format) { | 932 const GrGLStencilAttachment::Format& format)
{ |
933 #if !GR_GL_CHECK_FBO_STATUS_ONCE_PER_FORMAT | 933 #if !GR_GL_CHECK_FBO_STATUS_ONCE_PER_FORMAT |
934 return; | 934 return; |
935 #endif | 935 #endif |
936 SkASSERT((unsigned)config < (unsigned)kGrPixelConfigCnt); | 936 SkASSERT((unsigned)config < (unsigned)kGrPixelConfigCnt); |
937 SkASSERT(fStencilFormats.count() == fStencilVerifiedColorConfigs.count()); | 937 SkASSERT(fStencilFormats.count() == fStencilVerifiedColorConfigs.count()); |
938 int count = fStencilFormats.count(); | 938 int count = fStencilFormats.count(); |
939 // we expect a really small number of possible formats so linear search | 939 // we expect a really small number of possible formats so linear search |
940 // should be OK | 940 // should be OK |
941 SkASSERT(count < 16); | 941 SkASSERT(count < 16); |
942 for (int i = 0; i < count; ++i) { | 942 for (int i = 0; i < count; ++i) { |
943 if (format.fInternalFormat == | 943 if (format.fInternalFormat == |
944 fStencilFormats[i].fInternalFormat) { | 944 fStencilFormats[i].fInternalFormat) { |
945 fStencilVerifiedColorConfigs[i].markVerified(config); | 945 fStencilVerifiedColorConfigs[i].markVerified(config); |
946 return; | 946 return; |
947 } | 947 } |
948 } | 948 } |
949 SkFAIL("Why are we seeing a stencil format that " | 949 SkFAIL("Why are we seeing a stencil format that " |
950 "GrGLCaps doesn't know about."); | 950 "GrGLCaps doesn't know about."); |
951 } | 951 } |
952 | 952 |
953 bool GrGLCaps::isColorConfigAndStencilFormatVerified( | 953 bool GrGLCaps::isColorConfigAndStencilFormatVerified( |
954 GrPixelConfig config, | 954 GrPixelConfig config, |
955 const GrGLStencilBuffer::Format& format) const { | 955 const GrGLStencilAttachment::Format& format) con
st { |
956 #if !GR_GL_CHECK_FBO_STATUS_ONCE_PER_FORMAT | 956 #if !GR_GL_CHECK_FBO_STATUS_ONCE_PER_FORMAT |
957 return false; | 957 return false; |
958 #endif | 958 #endif |
959 SkASSERT((unsigned)config < (unsigned)kGrPixelConfigCnt); | 959 SkASSERT((unsigned)config < (unsigned)kGrPixelConfigCnt); |
960 int count = fStencilFormats.count(); | 960 int count = fStencilFormats.count(); |
961 // we expect a really small number of possible formats so linear search | 961 // we expect a really small number of possible formats so linear search |
962 // should be OK | 962 // should be OK |
963 SkASSERT(count < 16); | 963 SkASSERT(count < 16); |
964 for (int i = 0; i < count; ++i) { | 964 for (int i = 0; i < count; ++i) { |
965 if (format.fInternalFormat == | 965 if (format.fInternalFormat == |
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1050 r.appendf("Two Format Limit: %s\n", (fTwoFormatLimit ? "YES": "NO")); | 1050 r.appendf("Two Format Limit: %s\n", (fTwoFormatLimit ? "YES": "NO")); |
1051 r.appendf("Fragment coord conventions support: %s\n", | 1051 r.appendf("Fragment coord conventions support: %s\n", |
1052 (fFragCoordsConventionSupport ? "YES": "NO")); | 1052 (fFragCoordsConventionSupport ? "YES": "NO")); |
1053 r.appendf("Vertex array object support: %s\n", (fVertexArrayObjectSupport ?
"YES": "NO")); | 1053 r.appendf("Vertex array object support: %s\n", (fVertexArrayObjectSupport ?
"YES": "NO")); |
1054 r.appendf("Use non-VBO for dynamic data: %s\n", | 1054 r.appendf("Use non-VBO for dynamic data: %s\n", |
1055 (fUseNonVBOVertexAndIndexDynamicData ? "YES" : "NO")); | 1055 (fUseNonVBOVertexAndIndexDynamicData ? "YES" : "NO")); |
1056 r.appendf("Full screen clear is free: %s\n", (fFullClearIsFree ? "YES" : "NO
")); | 1056 r.appendf("Full screen clear is free: %s\n", (fFullClearIsFree ? "YES" : "NO
")); |
1057 r.appendf("Drops tile on zero divide: %s\n", (fDropsTileOnZeroDivide ? "YES"
: "NO")); | 1057 r.appendf("Drops tile on zero divide: %s\n", (fDropsTileOnZeroDivide ? "YES"
: "NO")); |
1058 return r; | 1058 return r; |
1059 } | 1059 } |
OLD | NEW |