Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 | 1 |
| 2 /* | 2 /* |
| 3 * Copyright 2010 Google Inc. | 3 * Copyright 2010 Google Inc. |
| 4 * | 4 * |
| 5 * Use of this source code is governed by a BSD-style license that can be | 5 * Use of this source code is governed by a BSD-style license that can be |
| 6 * found in the LICENSE file. | 6 * found in the LICENSE file. |
| 7 */ | 7 */ |
| 8 | 8 |
| 9 | 9 |
| 10 #ifndef GrContext_DEFINED | 10 #ifndef GrContext_DEFINED |
| (...skipping 28 matching lines...) Expand all Loading... | |
| 39 class GrVertexBufferAllocPool; | 39 class GrVertexBufferAllocPool; |
| 40 class GrSoftwarePathRenderer; | 40 class GrSoftwarePathRenderer; |
| 41 class SkStrokeRec; | 41 class SkStrokeRec; |
| 42 | 42 |
| 43 class GR_API GrContext : public GrRefCnt { | 43 class GR_API GrContext : public GrRefCnt { |
| 44 public: | 44 public: |
| 45 SK_DECLARE_INST_COUNT(GrContext) | 45 SK_DECLARE_INST_COUNT(GrContext) |
| 46 | 46 |
| 47 /** | 47 /** |
| 48 * Creates a GrContext for a backend context. | 48 * Creates a GrContext for a backend context. |
| 49 */ | 49 */ |
|
robertphillips
2013/07/17 16:51:32
An option would be to pass in a tri-value enum (e.
| |
| 50 static GrContext* Create(GrBackend, GrBackendContext); | 50 static GrContext* Create(GrBackend, GrBackendContext, bool* reuseScratchText ures = NULL); |
| 51 | 51 |
| 52 /** | 52 /** |
| 53 * Returns the number of GrContext instances for the current thread. | 53 * Returns the number of GrContext instances for the current thread. |
| 54 */ | 54 */ |
| 55 static int GetThreadInstanceCount(); | 55 static int GetThreadInstanceCount(); |
| 56 | 56 |
| 57 virtual ~GrContext(); | 57 virtual ~GrContext(); |
| 58 | 58 |
| 59 /** | 59 /** |
| 60 * The GrContext normally assumes that no outsider is setting state | 60 * The GrContext normally assumes that no outsider is setting state |
| (...skipping 17 matching lines...) Expand all Loading... | |
| 78 * The 'info' parameter will be stored and passed to the callback function. | 78 * The 'info' parameter will be stored and passed to the callback function. |
| 79 */ | 79 */ |
| 80 void addCleanUp(PFCleanUpFunc cleanUp, void* info) { | 80 void addCleanUp(PFCleanUpFunc cleanUp, void* info) { |
| 81 CleanUpData* entry = fCleanUpData.push(); | 81 CleanUpData* entry = fCleanUpData.push(); |
| 82 | 82 |
| 83 entry->fFunc = cleanUp; | 83 entry->fFunc = cleanUp; |
| 84 entry->fInfo = info; | 84 entry->fInfo = info; |
| 85 } | 85 } |
| 86 | 86 |
| 87 /** | 87 /** |
| 88 * Change the context's scratch texture reuse behavior. On some platforms | |
| 89 * reusing scratch textures can cause the driver to ghost the texture | |
| 90 * which, in excess, can lead to out of memory problems | |
| 91 */ | |
|
robertphillips
2013/07/17 16:51:32
This would remain a bool
| |
| 92 void setReuseScratchTextures(bool reuseScratchTextures) { | |
| 93 fReuseScratchTextures = reuseScratchTextures; | |
| 94 } | |
| 95 | |
| 96 /** | |
| 88 * Abandons all GPU resources, assumes 3D API state is unknown. Call this | 97 * Abandons all GPU resources, assumes 3D API state is unknown. Call this |
| 89 * if you have lost the associated GPU context, and thus internal texture, | 98 * if you have lost the associated GPU context, and thus internal texture, |
| 90 * buffer, etc. references/IDs are now invalid. Should be called even when | 99 * buffer, etc. references/IDs are now invalid. Should be called even when |
| 91 * GrContext is no longer going to be used for two reasons: | 100 * GrContext is no longer going to be used for two reasons: |
| 92 * 1) ~GrContext will not try to free the objects in the 3D API. | 101 * 1) ~GrContext will not try to free the objects in the 3D API. |
| 93 * 2) If you've created GrResources that outlive the GrContext they will | 102 * 2) If you've created GrResources that outlive the GrContext they will |
| 94 * be marked as invalid (GrResource::isValid()) and won't attempt to | 103 * be marked as invalid (GrResource::isValid()) and won't attempt to |
| 95 * free their underlying resource in the 3D API. | 104 * free their underlying resource in the 3D API. |
| 96 * Content drawn since the last GrContext::flush() may be lost. | 105 * Content drawn since the last GrContext::flush() may be lost. |
| 97 */ | 106 */ |
| (...skipping 761 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 859 GrVertexBufferAllocPool* fDrawBufferVBAllocPool; | 868 GrVertexBufferAllocPool* fDrawBufferVBAllocPool; |
| 860 GrIndexBufferAllocPool* fDrawBufferIBAllocPool; | 869 GrIndexBufferAllocPool* fDrawBufferIBAllocPool; |
| 861 GrInOrderDrawBuffer* fDrawBuffer; | 870 GrInOrderDrawBuffer* fDrawBuffer; |
| 862 | 871 |
| 863 GrAARectRenderer* fAARectRenderer; | 872 GrAARectRenderer* fAARectRenderer; |
| 864 GrOvalRenderer* fOvalRenderer; | 873 GrOvalRenderer* fOvalRenderer; |
| 865 | 874 |
| 866 bool fDidTestPMConversions; | 875 bool fDidTestPMConversions; |
| 867 int fPMToUPMConversion; | 876 int fPMToUPMConversion; |
| 868 int fUPMToPMConversion; | 877 int fUPMToPMConversion; |
| 869 | 878 |
|
robertphillips
2013/07/17 16:51:32
This would remain a bool
| |
| 879 bool fReuseScratchTextures; | |
| 880 | |
| 870 struct CleanUpData { | 881 struct CleanUpData { |
| 871 PFCleanUpFunc fFunc; | 882 PFCleanUpFunc fFunc; |
| 872 void* fInfo; | 883 void* fInfo; |
| 873 }; | 884 }; |
| 874 | 885 |
| 875 SkTDArray<CleanUpData> fCleanUpData; | 886 SkTDArray<CleanUpData> fCleanUpData; |
| 876 | 887 |
| 877 GrContext(); // init must be called after the constructor. | 888 GrContext(); // init must be called after the constructor. |
|
robertphillips
2013/07/17 16:51:32
This would also become tri-value
| |
| 878 bool init(GrBackend, GrBackendContext); | 889 bool init(GrBackend, GrBackendContext, bool *reuseScratchTextures); |
| 879 | 890 |
| 880 void setupDrawBuffer(); | 891 void setupDrawBuffer(); |
| 881 | 892 |
| 882 class AutoRestoreEffects; | 893 class AutoRestoreEffects; |
| 883 /// Sets the paint and returns the target to draw into. The paint can be NUL L in which case the | 894 /// Sets the paint and returns the target to draw into. The paint can be NUL L in which case the |
| 884 /// draw state is left unmodified. | 895 /// draw state is left unmodified. |
| 885 GrDrawTarget* prepareToDraw(const GrPaint*, BufferedDraw, AutoRestoreEffects *); | 896 GrDrawTarget* prepareToDraw(const GrPaint*, BufferedDraw, AutoRestoreEffects *); |
| 886 | 897 |
| 887 void internalDrawPath(GrDrawTarget* target, bool useAA, const SkPath& path, | 898 void internalDrawPath(GrDrawTarget* target, bool useAA, const SkPath& path, |
| 888 const SkStrokeRec& stroke); | 899 const SkStrokeRec& stroke); |
| (...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1002 } | 1013 } |
| 1003 | 1014 |
| 1004 GrTexture* texture() { return fTexture; } | 1015 GrTexture* texture() { return fTexture; } |
| 1005 | 1016 |
| 1006 private: | 1017 private: |
| 1007 GrContext* fContext; | 1018 GrContext* fContext; |
| 1008 GrTexture* fTexture; | 1019 GrTexture* fTexture; |
| 1009 }; | 1020 }; |
| 1010 | 1021 |
| 1011 #endif | 1022 #endif |
| OLD | NEW |