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 1326 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1337 fHWScissorSettings.fEnabled = kYes_TriState; | 1337 fHWScissorSettings.fEnabled = kYes_TriState; |
1338 } | 1338 } |
1339 return; | 1339 return; |
1340 } | 1340 } |
1341 } | 1341 } |
1342 | 1342 |
1343 // See fall through note above | 1343 // See fall through note above |
1344 this->disableScissor(); | 1344 this->disableScissor(); |
1345 } | 1345 } |
1346 | 1346 |
1347 bool GrGLGpu::flushGraphicsState(const GrOptDrawState& optState) { | 1347 bool GrGLGpu::flushGLState(const GrOptDrawState& optState) { |
1348 // GrGpu::setupClipAndFlushState should have already checked this and bailed
if not true. | 1348 // GrGpu::setupClipAndFlushState should have already checked this and bailed
if not true. |
1349 SkASSERT(optState.getRenderTarget()); | 1349 SkASSERT(optState.getRenderTarget()); |
1350 | 1350 |
1351 if (kStencilPath_DrawType == optState.drawType()) { | 1351 if (kStencilPath_DrawType == optState.drawType()) { |
1352 const GrRenderTarget* rt = optState.getRenderTarget(); | 1352 const GrRenderTarget* rt = optState.getRenderTarget(); |
1353 SkISize size; | 1353 SkISize size; |
1354 size.set(rt->width(), rt->height()); | 1354 size.set(rt->width(), rt->height()); |
1355 this->glPathRendering()->setProjectionMatrix(optState.getViewMatrix(), s
ize, rt->origin()); | 1355 this->glPathRendering()->setProjectionMatrix(optState.getViewMatrix(), s
ize, rt->origin()); |
1356 } else { | 1356 } else { |
1357 this->flushMiscFixedFunctionState(optState); | 1357 this->flushMiscFixedFunctionState(optState); |
(...skipping 469 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1827 if(wndProcID == procID) { | 1827 if(wndProcID == procID) { |
1828 SwapBuffers(GetDC(hwnd)); | 1828 SwapBuffers(GetDC(hwnd)); |
1829 } | 1829 } |
1830 hwnd = GetNextWindow(hwnd, GW_HWNDNEXT); | 1830 hwnd = GetNextWindow(hwnd, GW_HWNDNEXT); |
1831 } | 1831 } |
1832 } | 1832 } |
1833 #endif | 1833 #endif |
1834 #endif | 1834 #endif |
1835 | 1835 |
1836 void GrGLGpu::onDraw(const GrOptDrawState& ds, const GrDrawTarget::DrawInfo& inf
o) { | 1836 void GrGLGpu::onDraw(const GrOptDrawState& ds, const GrDrawTarget::DrawInfo& inf
o) { |
| 1837 if (!this->flushGLState(ds)) { |
| 1838 return; |
| 1839 } |
| 1840 |
1837 size_t indexOffsetInBytes; | 1841 size_t indexOffsetInBytes; |
1838 this->setupGeometry(ds, info, &indexOffsetInBytes); | 1842 this->setupGeometry(ds, info, &indexOffsetInBytes); |
1839 | 1843 |
1840 SkASSERT((size_t)info.primitiveType() < SK_ARRAY_COUNT(gPrimitiveType2GLMode
)); | 1844 SkASSERT((size_t)info.primitiveType() < SK_ARRAY_COUNT(gPrimitiveType2GLMode
)); |
1841 | 1845 |
1842 if (info.isIndexed()) { | 1846 if (info.isIndexed()) { |
1843 GrGLvoid* indices = | 1847 GrGLvoid* indices = |
1844 reinterpret_cast<GrGLvoid*>(indexOffsetInBytes + sizeof(uint16_t) *
info.startIndex()); | 1848 reinterpret_cast<GrGLvoid*>(indexOffsetInBytes + sizeof(uint16_t) *
info.startIndex()); |
1845 // info.startVertex() was accounted for by setupGeometry. | 1849 // info.startVertex() was accounted for by setupGeometry. |
1846 GL_CALL(DrawElements(gPrimitiveType2GLMode[info.primitiveType()], | 1850 GL_CALL(DrawElements(gPrimitiveType2GLMode[info.primitiveType()], |
(...skipping 13 matching lines...) Expand all Loading... |
1860 int set_a_break_pt_here = 9; | 1864 int set_a_break_pt_here = 9; |
1861 aglSwapBuffers(aglGetCurrentContext()); | 1865 aglSwapBuffers(aglGetCurrentContext()); |
1862 #elif defined(SK_BUILD_FOR_WIN32) | 1866 #elif defined(SK_BUILD_FOR_WIN32) |
1863 SwapBuf(); | 1867 SwapBuf(); |
1864 int set_a_break_pt_here = 9; | 1868 int set_a_break_pt_here = 9; |
1865 SwapBuf(); | 1869 SwapBuf(); |
1866 #endif | 1870 #endif |
1867 #endif | 1871 #endif |
1868 } | 1872 } |
1869 | 1873 |
| 1874 void GrGLGpu::onStencilPath(const GrOptDrawState& ds, |
| 1875 const GrPath* path, |
| 1876 const GrStencilSettings& stencil) { |
| 1877 if (!this->flushGLState(ds)) { |
| 1878 return; |
| 1879 } |
| 1880 fPathRendering->stencilPath(path, stencil); |
| 1881 } |
| 1882 |
| 1883 void GrGLGpu::onDrawPath(const GrOptDrawState& ds, const GrPath* path, |
| 1884 const GrStencilSettings& stencil) { |
| 1885 if (!this->flushGLState(ds)) { |
| 1886 return; |
| 1887 } |
| 1888 fPathRendering->drawPath(path, stencil); |
| 1889 } |
| 1890 |
| 1891 void GrGLGpu::onDrawPaths(const GrOptDrawState& ds, |
| 1892 const GrPathRange* pathRange, |
| 1893 const void* indices, |
| 1894 GrDrawTarget::PathIndexType indexType, |
| 1895 const float transformValues[], |
| 1896 GrDrawTarget::PathTransformType transformType, |
| 1897 int count, |
| 1898 const GrStencilSettings& stencil) { |
| 1899 if (!this->flushGLState(ds)) { |
| 1900 return; |
| 1901 } |
| 1902 fPathRendering->drawPaths(pathRange, indices, indexType, transformValues, |
| 1903 transformType, count, stencil); |
| 1904 } |
| 1905 |
1870 void GrGLGpu::onResolveRenderTarget(GrRenderTarget* target) { | 1906 void GrGLGpu::onResolveRenderTarget(GrRenderTarget* target) { |
1871 GrGLRenderTarget* rt = static_cast<GrGLRenderTarget*>(target); | 1907 GrGLRenderTarget* rt = static_cast<GrGLRenderTarget*>(target); |
1872 if (rt->needsResolve()) { | 1908 if (rt->needsResolve()) { |
1873 // Some extensions automatically resolves the texture when it is read. | 1909 // Some extensions automatically resolves the texture when it is read. |
1874 if (this->glCaps().usesMSAARenderBuffers()) { | 1910 if (this->glCaps().usesMSAARenderBuffers()) { |
1875 SkASSERT(rt->textureFBOID() != rt->renderFBOID()); | 1911 SkASSERT(rt->textureFBOID() != rt->renderFBOID()); |
1876 fGPUStats.incRenderTargetBinds(); | 1912 fGPUStats.incRenderTargetBinds(); |
1877 fGPUStats.incRenderTargetBinds(); | 1913 fGPUStats.incRenderTargetBinds(); |
1878 GL_CALL(BindFramebuffer(GR_GL_READ_FRAMEBUFFER, rt->renderFBOID())); | 1914 GL_CALL(BindFramebuffer(GR_GL_READ_FRAMEBUFFER, rt->renderFBOID())); |
1879 GL_CALL(BindFramebuffer(GR_GL_DRAW_FRAMEBUFFER, rt->textureFBOID()))
; | 1915 GL_CALL(BindFramebuffer(GR_GL_DRAW_FRAMEBUFFER, rt->textureFBOID()))
; |
(...skipping 815 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2695 this->setVertexArrayID(gpu, 0); | 2731 this->setVertexArrayID(gpu, 0); |
2696 } | 2732 } |
2697 int attrCount = gpu->glCaps().maxVertexAttributes(); | 2733 int attrCount = gpu->glCaps().maxVertexAttributes(); |
2698 if (fDefaultVertexArrayAttribState.count() != attrCount) { | 2734 if (fDefaultVertexArrayAttribState.count() != attrCount) { |
2699 fDefaultVertexArrayAttribState.resize(attrCount); | 2735 fDefaultVertexArrayAttribState.resize(attrCount); |
2700 } | 2736 } |
2701 attribState = &fDefaultVertexArrayAttribState; | 2737 attribState = &fDefaultVertexArrayAttribState; |
2702 } | 2738 } |
2703 return attribState; | 2739 return attribState; |
2704 } | 2740 } |
OLD | NEW |