| 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 #ifndef GrGLGpu_DEFINED | 8 #ifndef GrGLGpu_DEFINED |
| 9 #define GrGLGpu_DEFINED | 9 #define GrGLGpu_DEFINED |
| 10 | 10 |
| 11 #include "GrGLContext.h" | 11 #include "GrGLContext.h" |
| 12 #include "GrGLIRect.h" | 12 #include "GrGLIRect.h" |
| 13 #include "GrGLIndexBuffer.h" | |
| 14 #include "GrGLPathRendering.h" | 13 #include "GrGLPathRendering.h" |
| 15 #include "GrGLProgram.h" | 14 #include "GrGLProgram.h" |
| 16 #include "GrGLRenderTarget.h" | 15 #include "GrGLRenderTarget.h" |
| 17 #include "GrGLStencilAttachment.h" | 16 #include "GrGLStencilAttachment.h" |
| 18 #include "GrGLTexture.h" | 17 #include "GrGLTexture.h" |
| 19 #include "GrGLTransferBuffer.h" | |
| 20 #include "GrGLVertexArray.h" | 18 #include "GrGLVertexArray.h" |
| 21 #include "GrGLVertexBuffer.h" | |
| 22 #include "GrGpu.h" | 19 #include "GrGpu.h" |
| 23 #include "GrPipelineBuilder.h" | 20 #include "GrPipelineBuilder.h" |
| 24 #include "GrTypes.h" | 21 #include "GrTypes.h" |
| 25 #include "GrXferProcessor.h" | 22 #include "GrXferProcessor.h" |
| 26 #include "SkTArray.h" | 23 #include "SkTArray.h" |
| 27 #include "SkTypes.h" | 24 #include "SkTypes.h" |
| 28 | 25 |
| 26 class GrGLBuffer; |
| 29 class GrPipeline; | 27 class GrPipeline; |
| 30 class GrNonInstancedMesh; | 28 class GrNonInstancedMesh; |
| 31 class GrSwizzle; | 29 class GrSwizzle; |
| 32 | 30 |
| 33 #ifdef SK_DEVELOPER | 31 #ifdef SK_DEVELOPER |
| 34 #define PROGRAM_CACHE_STATS | 32 #define PROGRAM_CACHE_STATS |
| 35 #endif | 33 #endif |
| 36 | 34 |
| 37 class GrGLGpu : public GrGpu { | 35 class GrGLGpu : public GrGpu { |
| 38 public: | 36 public: |
| (...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 94 } | 92 } |
| 95 void notifyIndexBufferDelete(GrGLuint id) { | 93 void notifyIndexBufferDelete(GrGLuint id) { |
| 96 fHWGeometryState.notifyIndexBufferDelete(id); | 94 fHWGeometryState.notifyIndexBufferDelete(id); |
| 97 } | 95 } |
| 98 | 96 |
| 99 // id and type (GL_ARRAY_BUFFER, GL_ELEMENT_ARRAY_BUFFER, etc.) of buffer to
bind | 97 // id and type (GL_ARRAY_BUFFER, GL_ELEMENT_ARRAY_BUFFER, etc.) of buffer to
bind |
| 100 void bindBuffer(GrGLuint id, GrGLenum type); | 98 void bindBuffer(GrGLuint id, GrGLenum type); |
| 101 | 99 |
| 102 void releaseBuffer(GrGLuint id, GrGLenum type); | 100 void releaseBuffer(GrGLuint id, GrGLenum type); |
| 103 | 101 |
| 104 // sizes are in bytes | |
| 105 void* mapBuffer(GrGLuint id, GrGLenum type, GrGLBufferImpl::Usage usage, siz
e_t currentSize, | |
| 106 size_t requestedSize); | |
| 107 | |
| 108 void unmapBuffer(GrGLuint id, GrGLenum type, void* mapPtr); | |
| 109 | |
| 110 void bufferData(GrGLuint id, GrGLenum type, GrGLBufferImpl::Usage usage, siz
e_t currentSize, | |
| 111 const void* src, size_t srcSizeInBytes); | |
| 112 | |
| 113 const GrGLContext* glContextForTesting() const override { | 102 const GrGLContext* glContextForTesting() const override { |
| 114 return &this->glContext(); | 103 return &this->glContext(); |
| 115 } | 104 } |
| 116 | 105 |
| 117 void clearStencil(GrRenderTarget*) override; | 106 void clearStencil(GrRenderTarget*) override; |
| 118 | 107 |
| 119 void invalidateBoundRenderTarget() { | 108 void invalidateBoundRenderTarget() { |
| 120 fHWBoundRenderTargetUniqueID = SK_InvalidUniqueID; | 109 fHWBoundRenderTargetUniqueID = SK_InvalidUniqueID; |
| 121 } | 110 } |
| 122 | 111 |
| (...skipping 19 matching lines...) Expand all Loading... |
| 142 void onResetContext(uint32_t resetBits) override; | 131 void onResetContext(uint32_t resetBits) override; |
| 143 | 132 |
| 144 void xferBarrier(GrRenderTarget*, GrXferBarrierType) override; | 133 void xferBarrier(GrRenderTarget*, GrXferBarrierType) override; |
| 145 | 134 |
| 146 GrTexture* onCreateTexture(const GrSurfaceDesc& desc, GrGpuResource::LifeCyc
le lifeCycle, | 135 GrTexture* onCreateTexture(const GrSurfaceDesc& desc, GrGpuResource::LifeCyc
le lifeCycle, |
| 147 const SkTArray<GrMipLevel>& texels) override; | 136 const SkTArray<GrMipLevel>& texels) override; |
| 148 GrTexture* onCreateCompressedTexture(const GrSurfaceDesc& desc, | 137 GrTexture* onCreateCompressedTexture(const GrSurfaceDesc& desc, |
| 149 GrGpuResource::LifeCycle lifeCycle, | 138 GrGpuResource::LifeCycle lifeCycle, |
| 150 const SkTArray<GrMipLevel>& texels) ove
rride; | 139 const SkTArray<GrMipLevel>& texels) ove
rride; |
| 151 | 140 |
| 152 GrVertexBuffer* onCreateVertexBuffer(size_t size, bool dynamic) override; | 141 GrBuffer* onCreateBuffer(GrBufferType, size_t size, GrAccessPattern) overrid
e; |
| 153 GrIndexBuffer* onCreateIndexBuffer(size_t size, bool dynamic) override; | |
| 154 GrTransferBuffer* onCreateTransferBuffer(size_t size, TransferType type) ove
rride; | |
| 155 GrTexture* onWrapBackendTexture(const GrBackendTextureDesc&, GrWrapOwnership
) override; | 142 GrTexture* onWrapBackendTexture(const GrBackendTextureDesc&, GrWrapOwnership
) override; |
| 156 GrRenderTarget* onWrapBackendRenderTarget(const GrBackendRenderTargetDesc&, | 143 GrRenderTarget* onWrapBackendRenderTarget(const GrBackendRenderTargetDesc&, |
| 157 GrWrapOwnership) override; | 144 GrWrapOwnership) override; |
| 158 GrRenderTarget* onWrapBackendTextureAsRenderTarget(const GrBackendTextureDes
c&, | 145 GrRenderTarget* onWrapBackendTextureAsRenderTarget(const GrBackendTextureDes
c&, |
| 159 GrWrapOwnership) override
; | 146 GrWrapOwnership) override
; |
| 160 // Given a GrPixelConfig return the index into the stencil format array on G
rGLCaps to a | 147 // Given a GrPixelConfig return the index into the stencil format array on G
rGLCaps to a |
| 161 // compatible stencil format, or negative if there is no compatible stencil
format. | 148 // compatible stencil format, or negative if there is no compatible stencil
format. |
| 162 int getCompatibleStencilIndex(GrPixelConfig config); | 149 int getCompatibleStencilIndex(GrPixelConfig config); |
| 163 | 150 |
| 164 // If |desc.fTextureStorageAllocator| exists, use that to create the | 151 // If |desc.fTextureStorageAllocator| exists, use that to create the |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 201 void* buffer, | 188 void* buffer, |
| 202 size_t rowBytes) override; | 189 size_t rowBytes) override; |
| 203 | 190 |
| 204 bool onWritePixels(GrSurface*, | 191 bool onWritePixels(GrSurface*, |
| 205 int left, int top, int width, int height, | 192 int left, int top, int width, int height, |
| 206 GrPixelConfig config, | 193 GrPixelConfig config, |
| 207 const SkTArray<GrMipLevel>& texels) override; | 194 const SkTArray<GrMipLevel>& texels) override; |
| 208 | 195 |
| 209 bool onTransferPixels(GrSurface*, | 196 bool onTransferPixels(GrSurface*, |
| 210 int left, int top, int width, int height, | 197 int left, int top, int width, int height, |
| 211 GrPixelConfig config, GrTransferBuffer* buffer, | 198 GrPixelConfig config, GrBuffer* transferBuffer, |
| 212 size_t offset, size_t rowBytes) override; | 199 size_t offset, size_t rowBytes) override; |
| 213 | 200 |
| 214 void onResolveRenderTarget(GrRenderTarget* target) override; | 201 void onResolveRenderTarget(GrRenderTarget* target) override; |
| 215 | 202 |
| 216 void onDraw(const GrPipeline&, | 203 void onDraw(const GrPipeline&, |
| 217 const GrPrimitiveProcessor&, | 204 const GrPrimitiveProcessor&, |
| 218 const GrMesh*, | 205 const GrMesh*, |
| 219 int meshCount) override; | 206 int meshCount) override; |
| 220 | 207 |
| 221 bool onCopySurface(GrSurface* dst, | 208 bool onCopySurface(GrSurface* dst, |
| (...skipping 283 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 505 } | 492 } |
| 506 } | 493 } |
| 507 | 494 |
| 508 /** | 495 /** |
| 509 * Binds the vertex array object that should be used to render from the
vertex buffer. | 496 * Binds the vertex array object that should be used to render from the
vertex buffer. |
| 510 * The vertex array is bound and its attrib array state object is return
ed. The vertex | 497 * The vertex array is bound and its attrib array state object is return
ed. The vertex |
| 511 * buffer is bound. The index buffer (if non-nullptr) is bound to the ve
rtex array. The | 498 * buffer is bound. The index buffer (if non-nullptr) is bound to the ve
rtex array. The |
| 512 * returned GrGLAttribArrayState should be used to set vertex attribute
arrays. | 499 * returned GrGLAttribArrayState should be used to set vertex attribute
arrays. |
| 513 */ | 500 */ |
| 514 GrGLAttribArrayState* bindArrayAndBuffersToDraw(GrGLGpu* gpu, | 501 GrGLAttribArrayState* bindArrayAndBuffersToDraw(GrGLGpu* gpu, |
| 515 const GrGLVertexBuffer*
vbuffer, | 502 const GrGLBuffer* vbuffe
r, |
| 516 const GrGLIndexBuffer* i
buffer); | 503 const GrGLBuffer* ibuffe
r); |
| 517 | 504 |
| 518 /** Variants of the above that takes GL buffer IDs. Note that 0 does not
imply that a | 505 /** Variants of the above that takes GL buffer IDs. Note that 0 does not
imply that a |
| 519 buffer won't be bound. The "default buffer" will be bound, which is
used for client-side | 506 buffer won't be bound. The "default buffer" will be bound, which is
used for client-side |
| 520 array rendering. */ | 507 array rendering. */ |
| 521 GrGLAttribArrayState* bindArrayAndBufferToDraw(GrGLGpu* gpu, GrGLuint vb
ufferID); | 508 GrGLAttribArrayState* bindArrayAndBufferToDraw(GrGLGpu* gpu, GrGLuint vb
ufferID); |
| 522 GrGLAttribArrayState* bindArrayAndBuffersToDraw(GrGLGpu* gpu, | 509 GrGLAttribArrayState* bindArrayAndBuffersToDraw(GrGLGpu* gpu, |
| 523 GrGLuint vbufferID, | 510 GrGLuint vbufferID, |
| 524 GrGLuint ibufferID); | 511 GrGLuint ibufferID); |
| 525 | 512 |
| 526 private: | 513 private: |
| (...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 618 } fPLSSetupProgram; | 605 } fPLSSetupProgram; |
| 619 | 606 |
| 620 bool fHWPLSEnabled; | 607 bool fHWPLSEnabled; |
| 621 bool fPLSHasBeenUsed; | 608 bool fPLSHasBeenUsed; |
| 622 | 609 |
| 623 typedef GrGpu INHERITED; | 610 typedef GrGpu INHERITED; |
| 624 friend class GrGLPathRendering; // For accessing setTextureUnit. | 611 friend class GrGLPathRendering; // For accessing setTextureUnit. |
| 625 }; | 612 }; |
| 626 | 613 |
| 627 #endif | 614 #endif |
| OLD | NEW |