Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(124)

Side by Side Diff: src/gpu/gl/GrGLGpu.h

Issue 1153813002: Remove init from GrGLContextInfo and caps classes (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: cleanup Created 5 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
(...skipping 14 matching lines...) Expand all
25 25
26 class GrPipeline; 26 class GrPipeline;
27 class GrNonInstancedVertices; 27 class GrNonInstancedVertices;
28 28
29 #ifdef SK_DEVELOPER 29 #ifdef SK_DEVELOPER
30 #define PROGRAM_CACHE_STATS 30 #define PROGRAM_CACHE_STATS
31 #endif 31 #endif
32 32
33 class GrGLGpu : public GrGpu { 33 class GrGLGpu : public GrGpu {
34 public: 34 public:
35 GrGLGpu(const GrGLContext& ctx, GrContext* context); 35 static GrGpu* Create(GrBackendContext backendContext, GrContext* context);
36 ~GrGLGpu() override; 36 ~GrGLGpu() override;
37 37
38 void contextAbandoned() override; 38 void contextAbandoned() override;
39 39
40 const GrGLContext& glContext() const { return fGLContext; } 40 const GrGLContext& glContext() const { return *fGLContext; }
41 41
42 const GrGLInterface* glInterface() const { return fGLContext.interface(); } 42 const GrGLInterface* glInterface() const { return fGLContext->interface(); }
43 const GrGLContextInfo& ctxInfo() const { return fGLContext; } 43 const GrGLContextInfo& ctxInfo() const { return *fGLContext; }
44 GrGLStandard glStandard() const { return fGLContext.standard(); } 44 GrGLStandard glStandard() const { return fGLContext->standard(); }
45 GrGLVersion glVersion() const { return fGLContext.version(); } 45 GrGLVersion glVersion() const { return fGLContext->version(); }
46 GrGLSLGeneration glslGeneration() const { return fGLContext.glslGeneration() ; } 46 GrGLSLGeneration glslGeneration() const { return fGLContext->glslGeneration( ); }
47 const GrGLCaps& glCaps() const { return *fGLContext.caps(); } 47 const GrGLCaps& glCaps() const { return *fGLContext->caps(); }
48 48
49 GrGLPathRendering* glPathRendering() { 49 GrGLPathRendering* glPathRendering() {
50 SkASSERT(glCaps().shaderCaps()->pathRenderingSupport()); 50 SkASSERT(glCaps().shaderCaps()->pathRenderingSupport());
51 return static_cast<GrGLPathRendering*>(pathRendering()); 51 return static_cast<GrGLPathRendering*>(pathRendering());
52 } 52 }
53 53
54 void discard(GrRenderTarget*) override; 54 void discard(GrRenderTarget*) override;
55 55
56 // Used by GrGLProgram and GrGLPathTexGenProgramEffects to configure OpenGL 56 // Used by GrGLProgram and GrGLPathTexGenProgramEffects to configure OpenGL
57 // state. 57 // state.
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
107 const SkIPoint& dstPoint) override; 107 const SkIPoint& dstPoint) override;
108 108
109 void xferBarrier(GrRenderTarget*, GrXferBarrierType) override; 109 void xferBarrier(GrRenderTarget*, GrXferBarrierType) override;
110 110
111 void buildProgramDesc(GrProgramDesc*, 111 void buildProgramDesc(GrProgramDesc*,
112 const GrPrimitiveProcessor&, 112 const GrPrimitiveProcessor&,
113 const GrPipeline&, 113 const GrPipeline&,
114 const GrBatchTracker&) const override; 114 const GrBatchTracker&) const override;
115 115
116 private: 116 private:
117 GrGLGpu(GrGLContext* ctx, GrContext* context);
118
117 // GrGpu overrides 119 // GrGpu overrides
118 void onResetContext(uint32_t resetBits) override; 120 void onResetContext(uint32_t resetBits) override;
119 121
120 GrTexture* onCreateTexture(const GrSurfaceDesc& desc, GrGpuResource::LifeCyc le lifeCycle, 122 GrTexture* onCreateTexture(const GrSurfaceDesc& desc, GrGpuResource::LifeCyc le lifeCycle,
121 const void* srcData, size_t rowBytes) override; 123 const void* srcData, size_t rowBytes) override;
122 GrTexture* onCreateCompressedTexture(const GrSurfaceDesc& desc, 124 GrTexture* onCreateCompressedTexture(const GrSurfaceDesc& desc,
123 GrGpuResource::LifeCycle lifeCycle, 125 GrGpuResource::LifeCycle lifeCycle,
124 const void* srcData) override; 126 const void* srcData) override;
125 GrVertexBuffer* onCreateVertexBuffer(size_t size, bool dynamic) override; 127 GrVertexBuffer* onCreateVertexBuffer(size_t size, bool dynamic) override;
126 GrIndexBuffer* onCreateIndexBuffer(size_t size, bool dynamic) override; 128 GrIndexBuffer* onCreateIndexBuffer(size_t size, bool dynamic) override;
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
176 // Sets up vertex attribute pointers and strides. On return indexOffsetInByt es gives the offset 178 // Sets up vertex attribute pointers and strides. On return indexOffsetInByt es gives the offset
177 // an into the index buffer. It does not account for vertices.startIndex() b ut rather the start 179 // an into the index buffer. It does not account for vertices.startIndex() b ut rather the start
178 // index is relative to the returned offset. 180 // index is relative to the returned offset.
179 void setupGeometry(const GrPrimitiveProcessor&, 181 void setupGeometry(const GrPrimitiveProcessor&,
180 const GrNonInstancedVertices& vertices, 182 const GrNonInstancedVertices& vertices,
181 size_t* indexOffsetInBytes); 183 size_t* indexOffsetInBytes);
182 184
183 // Subclasses should call this to flush the blend state. 185 // Subclasses should call this to flush the blend state.
184 void flushBlend(const GrXferProcessor::BlendInfo& blendInfo); 186 void flushBlend(const GrXferProcessor::BlendInfo& blendInfo);
185 187
186 bool hasExtension(const char* ext) const { return fGLContext.hasExtension(ex t); } 188 bool hasExtension(const char* ext) const { return fGLContext->hasExtension(e xt); }
187 189
188 static bool BlendCoeffReferencesConstant(GrBlendCoeff coeff); 190 static bool BlendCoeffReferencesConstant(GrBlendCoeff coeff);
189 191
190 class ProgramCache : public ::SkNoncopyable { 192 class ProgramCache : public ::SkNoncopyable {
191 public: 193 public:
192 ProgramCache(GrGLGpu* gpu); 194 ProgramCache(GrGLGpu* gpu);
193 ~ProgramCache(); 195 ~ProgramCache();
194 196
195 void abandon(); 197 void abandon();
196 GrGLProgram* getProgram(const DrawArgs&); 198 GrGLProgram* getProgram(const DrawArgs&);
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after
287 enum TempFBOTarget { 289 enum TempFBOTarget {
288 kSrc_TempFBOTarget, 290 kSrc_TempFBOTarget,
289 kDst_TempFBOTarget 291 kDst_TempFBOTarget
290 }; 292 };
291 293
292 GrGLuint bindSurfaceAsFBO(GrSurface* surface, GrGLenum fboTarget, GrGLIRect* viewport, 294 GrGLuint bindSurfaceAsFBO(GrSurface* surface, GrGLenum fboTarget, GrGLIRect* viewport,
293 TempFBOTarget tempFBOTarget); 295 TempFBOTarget tempFBOTarget);
294 296
295 void unbindTextureFromFBO(GrGLenum fboTarget); 297 void unbindTextureFromFBO(GrGLenum fboTarget);
296 298
297 GrGLContext fGLContext; 299 SkAutoTDelete<GrGLContext> fGLContext;
298 300
299 // GL program-related state 301 // GL program-related state
300 ProgramCache* fProgramCache; 302 ProgramCache* fProgramCache;
301 SkAutoTUnref<GrGLProgram> fCurrentProgram; 303 SkAutoTUnref<GrGLProgram> fCurrentProgram;
302 304
303 /////////////////////////////////////////////////////////////////////////// 305 ///////////////////////////////////////////////////////////////////////////
304 ///@name Caching of GL State 306 ///@name Caching of GL State
305 ///@{ 307 ///@{
306 int fHWActiveTextureUnitIdx; 308 int fHWActiveTextureUnitIdx;
307 GrGLuint fHWProgramID; 309 GrGLuint fHWProgramID;
(...skipping 12 matching lines...) Expand all
320 // last scissor / viewport scissor state seen by the GL. 322 // last scissor / viewport scissor state seen by the GL.
321 struct { 323 struct {
322 TriState fEnabled; 324 TriState fEnabled;
323 GrGLIRect fRect; 325 GrGLIRect fRect;
324 void invalidate() { 326 void invalidate() {
325 fEnabled = kUnknown_TriState; 327 fEnabled = kUnknown_TriState;
326 fRect.invalidate(); 328 fRect.invalidate();
327 } 329 }
328 } fHWScissorSettings; 330 } fHWScissorSettings;
329 331
330 GrGLIRect fHWViewport; 332 GrGLIRect fHWViewport;
331 333
332 /** 334 /**
333 * Tracks bound vertex and index buffers and vertex attrib array state. 335 * Tracks bound vertex and index buffers and vertex attrib array state.
334 */ 336 */
335 class HWGeometryState { 337 class HWGeometryState {
336 public: 338 public:
337 HWGeometryState() { fVBOVertexArray = NULL; this->invalidate(); } 339 HWGeometryState() { fVBOVertexArray = NULL; this->invalidate(); }
338 340
339 ~HWGeometryState() { SkDELETE(fVBOVertexArray); } 341 ~HWGeometryState() { SkDELETE(fVBOVertexArray); }
340 342
(...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after
470 472
471 // we record what stencil format worked last time to hopefully exit early 473 // we record what stencil format worked last time to hopefully exit early
472 // from our loop that tries stencil formats and calls check fb status. 474 // from our loop that tries stencil formats and calls check fb status.
473 int fLastSuccessfulStencilFmtIdx; 475 int fLastSuccessfulStencilFmtIdx;
474 476
475 typedef GrGpu INHERITED; 477 typedef GrGpu INHERITED;
476 friend class GrGLPathRendering; // For accessing setTextureUnit. 478 friend class GrGLPathRendering; // For accessing setTextureUnit.
477 }; 479 };
478 480
479 #endif 481 #endif
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698