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

Unified Diff: src/gpu/GrTest.cpp

Issue 702083003: Add mock context and use in ResourceCacheTest. (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: restore removed null check Created 6 years, 1 month 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « src/gpu/GrContext.cpp ('k') | tests/ResourceCacheTest.cpp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/gpu/GrTest.cpp
diff --git a/src/gpu/GrTest.cpp b/src/gpu/GrTest.cpp
index 6013b1636bf41a0b012fd37faf82c34e88d1678d..efb37ca88c38ac023c44684a39b02802de68c324 100644
--- a/src/gpu/GrTest.cpp
+++ b/src/gpu/GrTest.cpp
@@ -40,3 +40,138 @@ void GrContext::setMaxTextureSizeOverride(int maxTextureSizeOverride) {
void GrContext::purgeAllUnlockedResources() {
fResourceCache->purgeAllUnlocked();
}
+
+///////////////////////////////////////////////////////////////////////////////
+// Code for the mock context. It's built on a mock GrGpu class that does nothing.
+////
+
+#include "GrBufferAllocPool.h"
+#include "GrInOrderDrawBuffer.h"
+#include "GrGpu.h"
+
+class MockGpu : public GrGpu {
+public:
+ MockGpu(GrContext* context) : INHERITED(context) { fCaps.reset(SkNEW(GrDrawTargetCaps)); }
+ virtual ~MockGpu() { }
+ virtual bool canWriteTexturePixels(const GrTexture*,
+ GrPixelConfig srcConfig) const SK_OVERRIDE {
+ return true;
+ }
+
+ virtual bool readPixelsWillPayForYFlip(GrRenderTarget* renderTarget,
+ int left, int top,
+ int width, int height,
+ GrPixelConfig config,
+ size_t rowBytes) const SK_OVERRIDE { return false; }
+ virtual void buildProgramDesc(const GrOptDrawState&,
+ const GrProgramDesc::DescInfo&,
+ GrGpu::DrawType,
+ const GrDeviceCoordTexture* dstCopy,
+ GrProgramDesc* desc) SK_OVERRIDE { }
+
+ virtual void discard(GrRenderTarget*) SK_OVERRIDE { }
+
+private:
+ virtual void onResetContext(uint32_t resetBits) { };
+ virtual GrTexture* onCreateTexture(const GrSurfaceDesc& desc,
+ const void* srcData,
+ size_t rowBytes) SK_OVERRIDE {
+ return NULL;
+ }
+
+ virtual GrTexture* onCreateCompressedTexture(const GrSurfaceDesc& desc,
+ const void* srcData) SK_OVERRIDE {
+ return NULL;
+ }
+
+ virtual GrTexture* onWrapBackendTexture(const GrBackendTextureDesc&) SK_OVERRIDE {
+ return NULL;
+ }
+
+ virtual GrRenderTarget* onWrapBackendRenderTarget(
+ const GrBackendRenderTargetDesc&) SK_OVERRIDE {
+ return NULL;
+ }
+
+ virtual GrVertexBuffer* onCreateVertexBuffer(size_t size, bool dynamic) SK_OVERRIDE {
+ return NULL;
+ }
+
+ virtual GrIndexBuffer* onCreateIndexBuffer(size_t size, bool dynamic) SK_OVERRIDE {
+ return NULL;
+ }
+
+ virtual void onGpuClear(GrRenderTarget*, const SkIRect* rect, GrColor color,
+ bool canIgnoreRect) SK_OVERRIDE { }
+
+ virtual void onClearStencilClip(GrRenderTarget*,
+ const SkIRect& rect,
+ bool insideClip) SK_OVERRIDE { }
+
+ virtual void onGpuDraw(const DrawInfo&) SK_OVERRIDE { }
+ virtual bool onReadPixels(GrRenderTarget* target,
+ int left, int top, int width, int height,
+ GrPixelConfig,
+ void* buffer,
+ size_t rowBytes) SK_OVERRIDE {
+ return false;
+ }
+
+ virtual bool onWriteTexturePixels(GrTexture* texture,
+ int left, int top, int width, int height,
+ GrPixelConfig config, const void* buffer,
+ size_t rowBytes) SK_OVERRIDE {
+ return false;
+ }
+
+ virtual void onResolveRenderTarget(GrRenderTarget* target) SK_OVERRIDE {
+ return;
+ }
+
+ virtual bool createStencilBufferForRenderTarget(GrRenderTarget*, int width,
+ int height) SK_OVERRIDE {
+ return false;
+ }
+
+ virtual bool attachStencilBufferToRenderTarget(GrStencilBuffer*, GrRenderTarget*) SK_OVERRIDE {
+ return false;
+ }
+
+ virtual bool flushGraphicsState(DrawType,
+ const GrClipMaskManager::ScissorState&,
+ const GrDeviceCoordTexture* dstCopy) SK_OVERRIDE {
+ return false;
+ }
+
+ virtual void clearStencil(GrRenderTarget* target) SK_OVERRIDE { }
+
+ virtual void didAddGpuTraceMarker() SK_OVERRIDE { }
+ virtual void didRemoveGpuTraceMarker() SK_OVERRIDE { }
+
+ typedef GrGpu INHERITED;
+};
+
+GrContext* GrContext::CreateMockContext() {
+ GrContext* context = SkNEW_ARGS(GrContext, (Options()));
+
+ context->initMockContext();
+ return context;
+}
+
+void GrContext::initMockContext() {
+ SkASSERT(NULL == fGpu);
+ fGpu = SkNEW_ARGS(MockGpu, (this));
+ SkASSERT(fGpu);
+ this->initCommon();
+
+ // We delete these because we want to test the cache starting with zero resources. Also, none of
+ // these objects are required for any of tests that use this context. TODO: make stop allocating
+ // resources in the buffer pools.
+ SkDELETE(fDrawBuffer);
+ SkDELETE(fDrawBufferVBAllocPool);
+ SkDELETE(fDrawBufferIBAllocPool);
+
+ fDrawBuffer = NULL;
+ fDrawBufferVBAllocPool = NULL;
+ fDrawBufferIBAllocPool = NULL;
+}
« no previous file with comments | « src/gpu/GrContext.cpp ('k') | tests/ResourceCacheTest.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698