| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright 2011 Google Inc. | 2 * Copyright 2011 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 "GrGpuGL.h" | 9 #include "GrGpuGL.h" |
| 10 #include "GrGLStencilBuffer.h" | 10 #include "GrGLStencilBuffer.h" |
| (...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 74 true, | 74 true, |
| 75 | 75 |
| 76 // extended blend coeffs | 76 // extended blend coeffs |
| 77 false, | 77 false, |
| 78 false, | 78 false, |
| 79 false, | 79 false, |
| 80 false, | 80 false, |
| 81 }; | 81 }; |
| 82 return gCoeffReferencesBlendConst[coeff]; | 82 return gCoeffReferencesBlendConst[coeff]; |
| 83 GR_STATIC_ASSERT(kTotalGrBlendCoeffCount == | 83 GR_STATIC_ASSERT(kTotalGrBlendCoeffCount == |
| 84 GR_ARRAY_COUNT(gCoeffReferencesBlendConst)); | 84 SK_ARRAY_COUNT(gCoeffReferencesBlendConst)); |
| 85 | 85 |
| 86 GR_STATIC_ASSERT(0 == kZero_GrBlendCoeff); | 86 GR_STATIC_ASSERT(0 == kZero_GrBlendCoeff); |
| 87 GR_STATIC_ASSERT(1 == kOne_GrBlendCoeff); | 87 GR_STATIC_ASSERT(1 == kOne_GrBlendCoeff); |
| 88 GR_STATIC_ASSERT(2 == kSC_GrBlendCoeff); | 88 GR_STATIC_ASSERT(2 == kSC_GrBlendCoeff); |
| 89 GR_STATIC_ASSERT(3 == kISC_GrBlendCoeff); | 89 GR_STATIC_ASSERT(3 == kISC_GrBlendCoeff); |
| 90 GR_STATIC_ASSERT(4 == kDC_GrBlendCoeff); | 90 GR_STATIC_ASSERT(4 == kDC_GrBlendCoeff); |
| 91 GR_STATIC_ASSERT(5 == kIDC_GrBlendCoeff); | 91 GR_STATIC_ASSERT(5 == kIDC_GrBlendCoeff); |
| 92 GR_STATIC_ASSERT(6 == kSA_GrBlendCoeff); | 92 GR_STATIC_ASSERT(6 == kSA_GrBlendCoeff); |
| 93 GR_STATIC_ASSERT(7 == kISA_GrBlendCoeff); | 93 GR_STATIC_ASSERT(7 == kISA_GrBlendCoeff); |
| 94 GR_STATIC_ASSERT(8 == kDA_GrBlendCoeff); | 94 GR_STATIC_ASSERT(8 == kDA_GrBlendCoeff); |
| 95 GR_STATIC_ASSERT(9 == kIDA_GrBlendCoeff); | 95 GR_STATIC_ASSERT(9 == kIDA_GrBlendCoeff); |
| 96 GR_STATIC_ASSERT(10 == kConstC_GrBlendCoeff); | 96 GR_STATIC_ASSERT(10 == kConstC_GrBlendCoeff); |
| 97 GR_STATIC_ASSERT(11 == kIConstC_GrBlendCoeff); | 97 GR_STATIC_ASSERT(11 == kIConstC_GrBlendCoeff); |
| 98 GR_STATIC_ASSERT(12 == kConstA_GrBlendCoeff); | 98 GR_STATIC_ASSERT(12 == kConstA_GrBlendCoeff); |
| 99 GR_STATIC_ASSERT(13 == kIConstA_GrBlendCoeff); | 99 GR_STATIC_ASSERT(13 == kIConstA_GrBlendCoeff); |
| 100 | 100 |
| 101 GR_STATIC_ASSERT(14 == kS2C_GrBlendCoeff); | 101 GR_STATIC_ASSERT(14 == kS2C_GrBlendCoeff); |
| 102 GR_STATIC_ASSERT(15 == kIS2C_GrBlendCoeff); | 102 GR_STATIC_ASSERT(15 == kIS2C_GrBlendCoeff); |
| 103 GR_STATIC_ASSERT(16 == kS2A_GrBlendCoeff); | 103 GR_STATIC_ASSERT(16 == kS2A_GrBlendCoeff); |
| 104 GR_STATIC_ASSERT(17 == kIS2A_GrBlendCoeff); | 104 GR_STATIC_ASSERT(17 == kIS2A_GrBlendCoeff); |
| 105 | 105 |
| 106 // assertion for gXfermodeCoeff2Blend have to be in GrGpu scope | 106 // assertion for gXfermodeCoeff2Blend have to be in GrGpu scope |
| 107 GR_STATIC_ASSERT(kTotalGrBlendCoeffCount == | 107 GR_STATIC_ASSERT(kTotalGrBlendCoeffCount == |
| 108 GR_ARRAY_COUNT(gXfermodeCoeff2Blend)); | 108 SK_ARRAY_COUNT(gXfermodeCoeff2Blend)); |
| 109 } | 109 } |
| 110 | 110 |
| 111 /////////////////////////////////////////////////////////////////////////////// | 111 /////////////////////////////////////////////////////////////////////////////// |
| 112 | 112 |
| 113 static bool gPrintStartupSpew; | 113 static bool gPrintStartupSpew; |
| 114 | 114 |
| 115 GrGpuGL::GrGpuGL(const GrGLContext& ctx, GrContext* context) | 115 GrGpuGL::GrGpuGL(const GrGLContext& ctx, GrContext* context) |
| 116 : GrGpu(context) | 116 : GrGpu(context) |
| 117 , fGLContext(ctx) { | 117 , fGLContext(ctx) { |
| 118 | 118 |
| (...skipping 753 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 872 GrGLRenderTarget::Desc glRTDesc; | 872 GrGLRenderTarget::Desc glRTDesc; |
| 873 | 873 |
| 874 // Attempt to catch un- or wrongly initialized sample counts; | 874 // Attempt to catch un- or wrongly initialized sample counts; |
| 875 SkASSERT(desc.fSampleCnt >= 0 && desc.fSampleCnt <= 64); | 875 SkASSERT(desc.fSampleCnt >= 0 && desc.fSampleCnt <= 64); |
| 876 // We fail if the MSAA was requested and is not available. | 876 // We fail if the MSAA was requested and is not available. |
| 877 if (GrGLCaps::kNone_MSFBOType == this->glCaps().msFBOType() && desc.fSampleC
nt) { | 877 if (GrGLCaps::kNone_MSFBOType == this->glCaps().msFBOType() && desc.fSampleC
nt) { |
| 878 //GrPrintf("MSAA RT requested but not supported on this platform."); | 878 //GrPrintf("MSAA RT requested but not supported on this platform."); |
| 879 return return_null_texture(); | 879 return return_null_texture(); |
| 880 } | 880 } |
| 881 // If the sample count exceeds the max then we clamp it. | 881 // If the sample count exceeds the max then we clamp it. |
| 882 glTexDesc.fSampleCnt = GrMin(desc.fSampleCnt, this->caps()->maxSampleCount()
); | 882 glTexDesc.fSampleCnt = SkTMin(desc.fSampleCnt, this->caps()->maxSampleCount(
)); |
| 883 | 883 |
| 884 glTexDesc.fFlags = desc.fFlags; | 884 glTexDesc.fFlags = desc.fFlags; |
| 885 glTexDesc.fWidth = desc.fWidth; | 885 glTexDesc.fWidth = desc.fWidth; |
| 886 glTexDesc.fHeight = desc.fHeight; | 886 glTexDesc.fHeight = desc.fHeight; |
| 887 glTexDesc.fConfig = desc.fConfig; | 887 glTexDesc.fConfig = desc.fConfig; |
| 888 glTexDesc.fIsWrapped = false; | 888 glTexDesc.fIsWrapped = false; |
| 889 | 889 |
| 890 glRTDesc.fMSColorRenderbufferID = 0; | 890 glRTDesc.fMSColorRenderbufferID = 0; |
| 891 glRTDesc.fRTFBOID = 0; | 891 glRTDesc.fRTFBOID = 0; |
| 892 glRTDesc.fTexFBOID = 0; | 892 glRTDesc.fTexFBOID = 0; |
| (...skipping 679 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1572 hwnd = GetNextWindow(hwnd, GW_HWNDNEXT); | 1572 hwnd = GetNextWindow(hwnd, GW_HWNDNEXT); |
| 1573 } | 1573 } |
| 1574 } | 1574 } |
| 1575 #endif | 1575 #endif |
| 1576 #endif | 1576 #endif |
| 1577 | 1577 |
| 1578 void GrGpuGL::onGpuDraw(const DrawInfo& info) { | 1578 void GrGpuGL::onGpuDraw(const DrawInfo& info) { |
| 1579 size_t indexOffsetInBytes; | 1579 size_t indexOffsetInBytes; |
| 1580 this->setupGeometry(info, &indexOffsetInBytes); | 1580 this->setupGeometry(info, &indexOffsetInBytes); |
| 1581 | 1581 |
| 1582 SkASSERT((size_t)info.primitiveType() < GR_ARRAY_COUNT(gPrimitiveType2GLMode
)); | 1582 SkASSERT((size_t)info.primitiveType() < SK_ARRAY_COUNT(gPrimitiveType2GLMode
)); |
| 1583 | 1583 |
| 1584 if (info.isIndexed()) { | 1584 if (info.isIndexed()) { |
| 1585 GrGLvoid* indices = | 1585 GrGLvoid* indices = |
| 1586 reinterpret_cast<GrGLvoid*>(indexOffsetInBytes + sizeof(uint16_t) *
info.startIndex()); | 1586 reinterpret_cast<GrGLvoid*>(indexOffsetInBytes + sizeof(uint16_t) *
info.startIndex()); |
| 1587 // info.startVertex() was accounted for by setupGeometry. | 1587 // info.startVertex() was accounted for by setupGeometry. |
| 1588 GL_CALL(DrawElements(gPrimitiveType2GLMode[info.primitiveType()], | 1588 GL_CALL(DrawElements(gPrimitiveType2GLMode[info.primitiveType()], |
| 1589 info.indexCount(), | 1589 info.indexCount(), |
| 1590 GR_GL_UNSIGNED_SHORT, | 1590 GR_GL_UNSIGNED_SHORT, |
| 1591 indices)); | 1591 indices)); |
| 1592 } else { | 1592 } else { |
| (...skipping 240 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1833 static const GrGLenum gTable[] = { | 1833 static const GrGLenum gTable[] = { |
| 1834 GR_GL_ALWAYS, // kAlways_StencilFunc | 1834 GR_GL_ALWAYS, // kAlways_StencilFunc |
| 1835 GR_GL_NEVER, // kNever_StencilFunc | 1835 GR_GL_NEVER, // kNever_StencilFunc |
| 1836 GR_GL_GREATER, // kGreater_StencilFunc | 1836 GR_GL_GREATER, // kGreater_StencilFunc |
| 1837 GR_GL_GEQUAL, // kGEqual_StencilFunc | 1837 GR_GL_GEQUAL, // kGEqual_StencilFunc |
| 1838 GR_GL_LESS, // kLess_StencilFunc | 1838 GR_GL_LESS, // kLess_StencilFunc |
| 1839 GR_GL_LEQUAL, // kLEqual_StencilFunc, | 1839 GR_GL_LEQUAL, // kLEqual_StencilFunc, |
| 1840 GR_GL_EQUAL, // kEqual_StencilFunc, | 1840 GR_GL_EQUAL, // kEqual_StencilFunc, |
| 1841 GR_GL_NOTEQUAL, // kNotEqual_StencilFunc, | 1841 GR_GL_NOTEQUAL, // kNotEqual_StencilFunc, |
| 1842 }; | 1842 }; |
| 1843 GR_STATIC_ASSERT(GR_ARRAY_COUNT(gTable) == kBasicStencilFuncCount); | 1843 GR_STATIC_ASSERT(SK_ARRAY_COUNT(gTable) == kBasicStencilFuncCount); |
| 1844 GR_STATIC_ASSERT(0 == kAlways_StencilFunc); | 1844 GR_STATIC_ASSERT(0 == kAlways_StencilFunc); |
| 1845 GR_STATIC_ASSERT(1 == kNever_StencilFunc); | 1845 GR_STATIC_ASSERT(1 == kNever_StencilFunc); |
| 1846 GR_STATIC_ASSERT(2 == kGreater_StencilFunc); | 1846 GR_STATIC_ASSERT(2 == kGreater_StencilFunc); |
| 1847 GR_STATIC_ASSERT(3 == kGEqual_StencilFunc); | 1847 GR_STATIC_ASSERT(3 == kGEqual_StencilFunc); |
| 1848 GR_STATIC_ASSERT(4 == kLess_StencilFunc); | 1848 GR_STATIC_ASSERT(4 == kLess_StencilFunc); |
| 1849 GR_STATIC_ASSERT(5 == kLEqual_StencilFunc); | 1849 GR_STATIC_ASSERT(5 == kLEqual_StencilFunc); |
| 1850 GR_STATIC_ASSERT(6 == kEqual_StencilFunc); | 1850 GR_STATIC_ASSERT(6 == kEqual_StencilFunc); |
| 1851 GR_STATIC_ASSERT(7 == kNotEqual_StencilFunc); | 1851 GR_STATIC_ASSERT(7 == kNotEqual_StencilFunc); |
| 1852 SkASSERT((unsigned) basicFunc < kBasicStencilFuncCount); | 1852 SkASSERT((unsigned) basicFunc < kBasicStencilFuncCount); |
| 1853 | 1853 |
| 1854 return gTable[basicFunc]; | 1854 return gTable[basicFunc]; |
| 1855 } | 1855 } |
| 1856 | 1856 |
| 1857 GrGLenum gr_to_gl_stencil_op(GrStencilOp op) { | 1857 GrGLenum gr_to_gl_stencil_op(GrStencilOp op) { |
| 1858 static const GrGLenum gTable[] = { | 1858 static const GrGLenum gTable[] = { |
| 1859 GR_GL_KEEP, // kKeep_StencilOp | 1859 GR_GL_KEEP, // kKeep_StencilOp |
| 1860 GR_GL_REPLACE, // kReplace_StencilOp | 1860 GR_GL_REPLACE, // kReplace_StencilOp |
| 1861 GR_GL_INCR_WRAP, // kIncWrap_StencilOp | 1861 GR_GL_INCR_WRAP, // kIncWrap_StencilOp |
| 1862 GR_GL_INCR, // kIncClamp_StencilOp | 1862 GR_GL_INCR, // kIncClamp_StencilOp |
| 1863 GR_GL_DECR_WRAP, // kDecWrap_StencilOp | 1863 GR_GL_DECR_WRAP, // kDecWrap_StencilOp |
| 1864 GR_GL_DECR, // kDecClamp_StencilOp | 1864 GR_GL_DECR, // kDecClamp_StencilOp |
| 1865 GR_GL_ZERO, // kZero_StencilOp | 1865 GR_GL_ZERO, // kZero_StencilOp |
| 1866 GR_GL_INVERT, // kInvert_StencilOp | 1866 GR_GL_INVERT, // kInvert_StencilOp |
| 1867 }; | 1867 }; |
| 1868 GR_STATIC_ASSERT(GR_ARRAY_COUNT(gTable) == kStencilOpCount); | 1868 GR_STATIC_ASSERT(SK_ARRAY_COUNT(gTable) == kStencilOpCount); |
| 1869 GR_STATIC_ASSERT(0 == kKeep_StencilOp); | 1869 GR_STATIC_ASSERT(0 == kKeep_StencilOp); |
| 1870 GR_STATIC_ASSERT(1 == kReplace_StencilOp); | 1870 GR_STATIC_ASSERT(1 == kReplace_StencilOp); |
| 1871 GR_STATIC_ASSERT(2 == kIncWrap_StencilOp); | 1871 GR_STATIC_ASSERT(2 == kIncWrap_StencilOp); |
| 1872 GR_STATIC_ASSERT(3 == kIncClamp_StencilOp); | 1872 GR_STATIC_ASSERT(3 == kIncClamp_StencilOp); |
| 1873 GR_STATIC_ASSERT(4 == kDecWrap_StencilOp); | 1873 GR_STATIC_ASSERT(4 == kDecWrap_StencilOp); |
| 1874 GR_STATIC_ASSERT(5 == kDecClamp_StencilOp); | 1874 GR_STATIC_ASSERT(5 == kDecClamp_StencilOp); |
| 1875 GR_STATIC_ASSERT(6 == kZero_StencilOp); | 1875 GR_STATIC_ASSERT(6 == kZero_StencilOp); |
| 1876 GR_STATIC_ASSERT(7 == kInvert_StencilOp); | 1876 GR_STATIC_ASSERT(7 == kInvert_StencilOp); |
| 1877 SkASSERT((unsigned) op < kStencilOpCount); | 1877 SkASSERT((unsigned) op < kStencilOpCount); |
| 1878 return gTable[op]; | 1878 return gTable[op]; |
| (...skipping 910 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2789 this->setVertexArrayID(gpu, 0); | 2789 this->setVertexArrayID(gpu, 0); |
| 2790 } | 2790 } |
| 2791 int attrCount = gpu->glCaps().maxVertexAttributes(); | 2791 int attrCount = gpu->glCaps().maxVertexAttributes(); |
| 2792 if (fDefaultVertexArrayAttribState.count() != attrCount) { | 2792 if (fDefaultVertexArrayAttribState.count() != attrCount) { |
| 2793 fDefaultVertexArrayAttribState.resize(attrCount); | 2793 fDefaultVertexArrayAttribState.resize(attrCount); |
| 2794 } | 2794 } |
| 2795 attribState = &fDefaultVertexArrayAttribState; | 2795 attribState = &fDefaultVertexArrayAttribState; |
| 2796 } | 2796 } |
| 2797 return attribState; | 2797 return attribState; |
| 2798 } | 2798 } |
| OLD | NEW |