| 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;
|
| +}
|
|
|