From 37feccb0bb858d7d970600ff97e48f540954fc6b Mon Sep 17 00:00:00 2001 From: brianosman Date: Thu, 23 Jun 2016 06:11:51 -0700 Subject: [PATCH] Revert of Support GL_SAMPLES queries in null contexts (patchset #4 id:60001 of https://codereview.chromium.org/2085043002/ ) Reason for revert: ASAN failures (including DEPS roll). Original issue's description: > Support GL_SAMPLES queries in null contexts > > BUG=skia: > GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2085043002 > > Committed: https://skia.googlesource.com/skia/+/64b92a59294a2f73448b3fa8f36f39079f032521 > Committed: https://skia.googlesource.com/skia/+/57e98530c113066c4c2d9c64505c52dc25e66c00 TBR=bsalomon@google.com,csmartdalton@google.com # Skipping CQ checks because original CL landed less than 1 days ago. NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG=skia: Review-Url: https://codereview.chromium.org/2091773002 --- src/gpu/gl/GrGLCreateNullInterface.cpp | 423 ++++++------------------------ tools/gpu/gl/debug/DebugGLTestContext.cpp | 79 +----- tools/gpu/gl/debug/GrFBBindableObj.h | 6 +- tools/gpu/gl/debug/GrRenderBufferObj.h | 5 - 4 files changed, 76 insertions(+), 437 deletions(-) diff --git a/src/gpu/gl/GrGLCreateNullInterface.cpp b/src/gpu/gl/GrGLCreateNullInterface.cpp index da8e6b3..efdea2b 100644 --- a/src/gpu/gl/GrGLCreateNullInterface.cpp +++ b/src/gpu/gl/GrGLCreateNullInterface.cpp @@ -6,97 +6,19 @@ */ -#include "GrNonAtomicRef.h" #include "gl/GrGLInterface.h" #include "GrGLTestInterface.h" #include "SkMutex.h" #include "SkTDArray.h" -#include // added to suppress 'no previous prototype' warning and because this code is duplicated in // SkNullGLContext.cpp namespace { -class GLObject : public GrNonAtomicRef { +class BufferObj { public: - GLObject(GrGLuint id) : fID(id) {} - GrGLuint id() const { return fID; } - -private: - GrGLuint fID; -}; - -// This class maintains a sparsely populated array of object pointers. -template class TGLObjectManager { - static_assert(std::is_convertible::value, "T must be a subclass of GLObject"); - -public: - TGLObjectManager() : fFreeListHead(kFreeListEnd) { - *fGLObjects.append() = nullptr; // 0 is not a valid GL object id. - } - - ~TGLObjectManager() { - // nullptr out the entries that are really free list links rather than ptrs before deleting. - intptr_t curr = fFreeListHead; - while (kFreeListEnd != curr) { - intptr_t next = reinterpret_cast(fGLObjects[SkToS32(curr)]); - fGLObjects[SkToS32(curr)] = nullptr; - curr = next; - } - - fGLObjects.safeUnrefAll(); - } - - T* lookUp(GrGLuint id) { - T* object = fGLObjects[id]; - SkASSERT(object && object->id() == id); - return object; - } - - T* create() { - GrGLuint id; - T* object; - - if (kFreeListEnd == fFreeListHead) { - // no free slots - create a new one - id = fGLObjects.count(); - object = new T(id); - *fGLObjects.append() = object; - } else { - // grab the head of the free list and advance the head to the next free slot. - id = static_cast(fFreeListHead); - fFreeListHead = reinterpret_cast(fGLObjects[id]); - - object = new T(id); - fGLObjects[id] = object; - } - - return object; - } - - void free(T* object) { - SkASSERT(object); - SkASSERT(fGLObjects.count() > 0); - - GrGLuint id = object->id(); - object->unref(); - - fGLObjects[id] = reinterpret_cast(fFreeListHead); - fFreeListHead = id; - } - -private: - static const intptr_t kFreeListEnd = -1; - // Index of the first entry of fGLObjects in the free list. Free slots in fGLObjects are indices - // to the next free slot. The last free slot has a value of kFreeListEnd. - intptr_t fFreeListHead; - SkTDArray fGLObjects; -}; - -class Buffer : public GLObject { -public: - Buffer(GrGLuint id) : INHERITED(id), fDataPtr(nullptr), fSize(0), fMapped(false) {} - ~Buffer() { delete[] fDataPtr; } + BufferObj(GrGLuint id) : fID(id), fDataPtr(nullptr), fSize(0), fMapped(false) {} + ~BufferObj() { delete[] fDataPtr; } void allocate(GrGLsizeiptr size, const GrGLchar* dataPtr) { if (fDataPtr) { @@ -108,6 +30,7 @@ public: fDataPtr = new char[size]; } + GrGLuint id() const { return fID; } GrGLchar* dataPtr() { return fDataPtr; } GrGLsizeiptr size() const { return fSize; } @@ -115,119 +38,82 @@ public: bool mapped() const { return fMapped; } private: + GrGLuint fID; GrGLchar* fDataPtr; GrGLsizeiptr fSize; // size in bytes bool fMapped; - - typedef GLObject INHERITED; -}; - -class FramebufferAttachment : public GLObject { -public: - FramebufferAttachment(int id) : INHERITED(id), fNumSamples(1) {} - int numSamples() const { return fNumSamples; } - -protected: - int fNumSamples; - - typedef GLObject INHERITED; }; -class Renderbuffer : public FramebufferAttachment { +// This class maintains a sparsely populated array of buffer pointers. +class BufferManager { public: - Renderbuffer(int id) : INHERITED(id) {} - void setNumSamples(int numSamples) { fNumSamples = numSamples; } - -private: - typedef FramebufferAttachment INHERITED; -}; + BufferManager() : fFreeListHead(kFreeListEnd) { + *fBuffers.append() = nullptr; // 0 is not a valid GL buffer id. + } -class Texture : public FramebufferAttachment { -public: - // We currently only use FramebufferAttachment objects for a sample count, and all textures in - // Skia have one sample, so there is no need as of yet to track individual textures. This also - // works around a bug in chromium's cc_unittests where they send us texture IDs that were - // generated by cc::TestGLES2Interface. - static Texture* GetSingleInstance() { - static Texture* singleInstance; - if (!singleInstance) { - singleInstance = new Texture(); + ~BufferManager() { + // nullptr out the entries that are really free list links rather than ptrs before deleting. + intptr_t curr = fFreeListHead; + while (kFreeListEnd != curr) { + intptr_t next = reinterpret_cast(fBuffers[SkToS32(curr)]); + fBuffers[SkToS32(curr)] = nullptr; + curr = next; } - return singleInstance; + + fBuffers.deleteAll(); } -private: - Texture() : INHERITED(1) {} + BufferObj* lookUp(GrGLuint id) { + BufferObj* buffer = fBuffers[id]; + SkASSERT(buffer && buffer->id() == id); + return buffer; + } - typedef FramebufferAttachment INHERITED; -}; + BufferObj* create() { + GrGLuint id; + BufferObj* buffer; -class Framebuffer : public GLObject { -public: - Framebuffer(int id) : INHERITED(id) {} + if (kFreeListEnd == fFreeListHead) { + // no free slots - create a new one + id = fBuffers.count(); + buffer = new BufferObj(id); + *fBuffers.append() = buffer; + } else { + // grab the head of the free list and advance the head to the next free slot. + id = static_cast(fFreeListHead); + fFreeListHead = reinterpret_cast(fBuffers[id]); - void setAttachment(GrGLenum attachmentPoint, const FramebufferAttachment* attachment) { - switch (attachmentPoint) { - default: - SK_ABORT("Invalid framebuffer attachment."); - break; - case GR_GL_STENCIL_ATTACHMENT: - fAttachments[(int)AttachmentPoint::kStencil].reset(SkRef(attachment)); - break; - case GR_GL_DEPTH_ATTACHMENT: - fAttachments[(int)AttachmentPoint::kDepth].reset(SkRef(attachment)); - break; - case GR_GL_COLOR_ATTACHMENT0: - fAttachments[(int)AttachmentPoint::kColor].reset(SkRef(attachment)); - break; + buffer = new BufferObj(id); + fBuffers[id] = buffer; } - } - void notifyAttachmentDeleteWhileBound(const FramebufferAttachment* deleted) { - for (auto& attachment : fAttachments) { - if (attachment == deleted) { - attachment.reset(nullptr); - } - } + return buffer; } - int numSamples() const { - int numSamples = 0; - for (auto& attachment : fAttachments) { - if (!attachment) { - continue; - } - if (numSamples) { - GrAlwaysAssert(attachment->numSamples() == numSamples); - continue; - } - numSamples = attachment->numSamples(); - } - GrAlwaysAssert(numSamples); - return numSamples; - } + void free(BufferObj* buffer) { + SkASSERT(buffer); + SkASSERT(fBuffers.count() > 0); -private: - enum AttachmentPoint { - kStencil, - kDepth, - kColor - }; - constexpr int static kNumAttachmentPoints = 1 + (int)AttachmentPoint::kColor; + GrGLuint id = buffer->id(); + delete buffer; - SkAutoTUnref fAttachments[kNumAttachmentPoints]; + fBuffers[id] = reinterpret_cast(fFreeListHead); + fFreeListHead = id; + } - typedef GLObject INHERITED; +private: + static const intptr_t kFreeListEnd = -1; + // Index of the first entry of fBuffers in the free list. Free slots in fBuffers are indices to + // the next free slot. The last free slot has a value of kFreeListEnd. + intptr_t fFreeListHead; + SkTDArray fBuffers; }; /** Null interface implementation */ class NullInterface : public GrGLTestInterface { public: NullInterface(bool enableNVPR) - : fCurrDrawFramebuffer(0) - , fCurrReadFramebuffer(0) - , fCurrRenderbuffer(0) - , fCurrProgramID(0) + : fCurrProgramID(0) , fCurrShaderID(0) , fCurrGenericID(0) , fCurrUniformLocation(0) @@ -254,7 +140,7 @@ public: GrGLvoid genBuffers(GrGLsizei n, GrGLuint* ids) override { for (int i = 0; i < n; ++i) { - Buffer* buffer = fBufferManager.create(); + BufferObj* buffer = fBufferManager.create(); ids[i] = buffer->id(); } } @@ -263,7 +149,7 @@ public: GrGLenum usage) override { GrGLuint id = fBoundBuffers[GetBufferIndex(target)]; if (id > 0) { - Buffer* buffer = fBufferManager.lookUp(id); + BufferObj* buffer = fBufferManager.lookUp(id); buffer->allocate(size, (const GrGLchar*) data); } } @@ -298,168 +184,26 @@ public: // Then actually "delete" the buffers. for (int i = 0; i < n; ++i) { if (ids[i] > 0) { - Buffer* buffer = fBufferManager.lookUp(ids[i]); + BufferObj* buffer = fBufferManager.lookUp(ids[i]); fBufferManager.free(buffer); } } } GrGLvoid genFramebuffers(GrGLsizei n, GrGLuint *framebuffers) override { - for (int i = 0; i < n; ++i) { - Framebuffer* framebuffer = fFramebufferManager.create(); - framebuffers[i] = framebuffer->id(); - } - } - - GrGLvoid bindFramebuffer(GrGLenum target, GrGLuint framebuffer) override { - SkASSERT(GR_GL_FRAMEBUFFER == target || GR_GL_DRAW_FRAMEBUFFER == target || - GR_GL_READ_FRAMEBUFFER == target); - if (GR_GL_READ_FRAMEBUFFER != target) { - fCurrDrawFramebuffer = framebuffer; - } - if (GR_GL_DRAW_FRAMEBUFFER != target) { - fCurrReadFramebuffer = framebuffer; - } - } - - GrGLvoid deleteFramebuffers(GrGLsizei n, const GrGLuint* ids) override { - for (int i = 0; i < n; ++i) { - if (ids[i] == fCurrDrawFramebuffer) { - fCurrDrawFramebuffer = 0; - } - if (ids[i] == fCurrReadFramebuffer) { - fCurrReadFramebuffer = 0; - } - - if (ids[i] > 0) { - Framebuffer* framebuffer = fFramebufferManager.lookUp(ids[i]); - fFramebufferManager.free(framebuffer); - } - } + this->genGenericIds(n, framebuffers); } GrGLvoid genQueries(GrGLsizei n, GrGLuint *ids) override { this->genGenericIds(n, ids); } GrGLvoid genRenderbuffers(GrGLsizei n, GrGLuint *renderbuffers) override { - for (int i = 0; i < n; ++i) { - Renderbuffer* renderbuffer = fRenderbufferManager.create(); - renderbuffers[i] = renderbuffer->id(); - } - } - - GrGLvoid bindRenderbuffer(GrGLenum target, GrGLuint renderbuffer) override { - SkASSERT(GR_GL_RENDERBUFFER == target); - fCurrRenderbuffer = renderbuffer; - } - - GrGLvoid deleteRenderbuffers(GrGLsizei n, const GrGLuint* ids) override { - for (int i = 0; i < n; ++i) { - if (ids[i] <= 0) { - continue; - } - if (ids[i] == fCurrRenderbuffer) { - fCurrRenderbuffer = 0; - } - Renderbuffer* renderbuffer = fRenderbufferManager.lookUp(ids[i]); - - if (fCurrDrawFramebuffer) { - Framebuffer* drawFramebuffer = fFramebufferManager.lookUp(fCurrDrawFramebuffer); - drawFramebuffer->notifyAttachmentDeleteWhileBound(renderbuffer); - } - if (fCurrReadFramebuffer) { - Framebuffer* readFramebuffer = fFramebufferManager.lookUp(fCurrReadFramebuffer); - readFramebuffer->notifyAttachmentDeleteWhileBound(renderbuffer); - } - - fRenderbufferManager.free(renderbuffer); - } - } - - GrGLvoid renderbufferStorage(GrGLenum target, GrGLenum internalformat, GrGLsizei width, - GrGLsizei height) override { - GrAlwaysAssert(GR_GL_RENDERBUFFER == target); - GrAlwaysAssert(fCurrRenderbuffer); - Renderbuffer* renderbuffer = fRenderbufferManager.lookUp(fCurrRenderbuffer); - renderbuffer->setNumSamples(1); - } - - GrGLvoid renderbufferStorageMultisample(GrGLenum target, GrGLsizei samples, - GrGLenum internalformat, GrGLsizei width, - GrGLsizei height) override { - GrAlwaysAssert(GR_GL_RENDERBUFFER == target); - GrAlwaysAssert(samples > 0); - GrAlwaysAssert(fCurrRenderbuffer); - Renderbuffer* renderbuffer = fRenderbufferManager.lookUp(fCurrRenderbuffer); - renderbuffer->setNumSamples(samples); - } - - GrGLvoid namedRenderbufferStorage(GrGLuint renderbuffer, GrGLenum GrGLinternalformat, - GrGLsizei width, GrGLsizei height) override { - SK_ABORT("Not implemented"); - } - - GrGLvoid namedRenderbufferStorageMultisample(GrGLuint renderbuffer, GrGLsizei samples, - GrGLenum GrGLinternalformat, GrGLsizei width, - GrGLsizei height) override { - SK_ABORT("Not implemented"); - } - - GrGLvoid framebufferRenderbuffer(GrGLenum target, GrGLenum attachment, - GrGLenum renderbuffertarget, - GrGLuint renderBufferID) override { - GrGLuint id = this->getBoundFramebufferID(target); - GrAlwaysAssert(id); - Framebuffer* framebuffer = fFramebufferManager.lookUp(id); - - GrAlwaysAssert(GR_GL_RENDERBUFFER == renderbuffertarget); - GrAlwaysAssert(fCurrRenderbuffer); - Renderbuffer* renderbuffer = fRenderbufferManager.lookUp(fCurrRenderbuffer); - - framebuffer->setAttachment(attachment, renderbuffer); - } - - GrGLvoid namedFramebufferRenderbuffer(GrGLuint framebuffer, GrGLenum attachment, - GrGLenum renderbuffertarget, - GrGLuint renderbuffer) override { - SK_ABORT("Not implemented"); + this->genGenericIds(n, renderbuffers); } GrGLvoid genTextures(GrGLsizei n, GrGLuint *textures) override { this->genGenericIds(n, textures); } - GrGLvoid framebufferTexture2D(GrGLenum target, GrGLenum attachment, GrGLenum textarget, - GrGLuint textureID, GrGLint level) override { - GrGLuint id = this->getBoundFramebufferID(target); - GrAlwaysAssert(id); - Framebuffer* framebuffer = fFramebufferManager.lookUp(id); - framebuffer->setAttachment(attachment, Texture::GetSingleInstance()); - } - - GrGLvoid framebufferTexture2DMultisample(GrGLenum target, GrGLenum attachment, - GrGLenum textarget, GrGLuint texture, GrGLint level, - GrGLsizei samples) override { - SK_ABORT("Not implemented"); - } - - GrGLvoid namedFramebufferTexture1D(GrGLuint framebuffer, GrGLenum attachment, - GrGLenum textarget, GrGLuint texture, - GrGLint level) override { - SK_ABORT("Not implemented"); - } - - GrGLvoid namedFramebufferTexture2D(GrGLuint framebuffer, GrGLenum attachment, - GrGLenum textarget, GrGLuint texture, - GrGLint level) override { - SK_ABORT("Not implemented"); - } - - GrGLvoid namedFramebufferTexture3D(GrGLuint framebuffer, GrGLenum attachment, - GrGLenum textarget, GrGLuint texture, GrGLint level, - GrGLint zoffset) override { - SK_ABORT("Not implemented"); - } - GrGLvoid genVertexArrays(GrGLsizei n, GrGLuint *arrays) override { this->genGenericIds(n, arrays); } @@ -476,12 +220,9 @@ public: case GR_GL_STENCIL_BITS: *params = 8; break; - case GR_GL_SAMPLES: { - GrAlwaysAssert(fCurrDrawFramebuffer); - Framebuffer* framebuffer = fFramebufferManager.lookUp(fCurrDrawFramebuffer); - *params = framebuffer->numSamples(); + case GR_GL_SAMPLES: + *params = 1; break; - } case GR_GL_FRAMEBUFFER_BINDING: *params = 0; break; @@ -635,7 +376,7 @@ public: GrGLuint id = fBoundBuffers[GetBufferIndex(target)]; if (id > 0) { // We just ignore the offset and length here. - Buffer* buffer = fBufferManager.lookUp(id); + BufferObj* buffer = fBufferManager.lookUp(id); SkASSERT(!buffer->mapped()); buffer->setMapped(true); return buffer->dataPtr(); @@ -646,7 +387,7 @@ public: GrGLvoid* mapBuffer(GrGLenum target, GrGLenum access) override { GrGLuint id = fBoundBuffers[GetBufferIndex(target)]; if (id > 0) { - Buffer* buffer = fBufferManager.lookUp(id); + BufferObj* buffer = fBufferManager.lookUp(id); SkASSERT(!buffer->mapped()); buffer->setMapped(true); return buffer->dataPtr(); @@ -659,7 +400,7 @@ public: GrGLboolean unmapBuffer(GrGLenum target) override { GrGLuint id = fBoundBuffers[GetBufferIndex(target)]; if (id > 0) { - Buffer* buffer = fBufferManager.lookUp(id); + BufferObj* buffer = fBufferManager.lookUp(id); SkASSERT(buffer->mapped()); buffer->setMapped(false); return GR_GL_TRUE; @@ -675,7 +416,7 @@ public: *params = GR_GL_FALSE; GrGLuint id = fBoundBuffers[GetBufferIndex(target)]; if (id > 0) { - Buffer* buffer = fBufferManager.lookUp(id); + BufferObj* buffer = fBufferManager.lookUp(id); if (buffer->mapped()) { *params = GR_GL_TRUE; } @@ -707,19 +448,14 @@ private: } constexpr int static kNumBufferTargets = 6; - TGLObjectManager fBufferManager; - GrGLuint fBoundBuffers[kNumBufferTargets]; - TGLObjectManager fFramebufferManager; - GrGLuint fCurrDrawFramebuffer; - GrGLuint fCurrReadFramebuffer; - TGLObjectManager fRenderbufferManager; - GrGLuint fCurrRenderbuffer; - GrGLuint fCurrProgramID; - GrGLuint fCurrShaderID; - GrGLuint fCurrGenericID; - GrGLuint fCurrUniformLocation; - GrGLuint fCurrPathID; - SkTArray fExtensions; + BufferManager fBufferManager; + GrGLuint fBoundBuffers[kNumBufferTargets]; + GrGLuint fCurrProgramID; + GrGLuint fCurrShaderID; + GrGLuint fCurrGenericID; + GrGLuint fCurrUniformLocation; + GrGLuint fCurrPathID; + SkTArray fExtensions; // the OpenGLES 2.0 spec says this must be >= 128 static const GrGLint kDefaultMaxVertexUniformVectors = 128; @@ -733,19 +469,6 @@ private: // the OpenGLES 2.0 spec says this must be >= 8 static const GrGLint kDefaultMaxVaryingVectors = 8; - GrGLuint getBoundFramebufferID(GrGLenum target) { - switch (target) { - case GR_GL_FRAMEBUFFER: - case GR_GL_DRAW_FRAMEBUFFER: - return fCurrDrawFramebuffer; - case GR_GL_READ_FRAMEBUFFER: - return fCurrReadFramebuffer; - default: - SK_ABORT("Invalid framebuffer target."); - return 0; - } - } - const GrGLubyte* CombinedExtensionString() { static SkString gExtString; static SkMutex gMutex; diff --git a/tools/gpu/gl/debug/DebugGLTestContext.cpp b/tools/gpu/gl/debug/DebugGLTestContext.cpp index cf8a9e4..022d56a 100644 --- a/tools/gpu/gl/debug/DebugGLTestContext.cpp +++ b/tools/gpu/gl/debug/DebugGLTestContext.cpp @@ -373,34 +373,6 @@ public: } } - GrGLvoid renderbufferStorage(GrGLenum target, GrGLenum internalformat, GrGLsizei width, - GrGLsizei height) override { - GrAlwaysAssert(GR_GL_RENDERBUFFER == target); - GrRenderBufferObj* renderBuffer = this->getRenderBuffer(); - GrAlwaysAssert(renderBuffer); - renderBuffer->setNumSamples(1); - } - - GrGLvoid renderbufferStorageMultisample(GrGLenum target, GrGLsizei samples, - GrGLenum internalformat, GrGLsizei width, - GrGLsizei height) override { - GrAlwaysAssert(GR_GL_RENDERBUFFER == target); - GrRenderBufferObj* renderBuffer = this->getRenderBuffer(); - GrAlwaysAssert(renderBuffer); - renderBuffer->setNumSamples(samples); - } - - GrGLvoid namedRenderbufferStorage(GrGLuint renderbuffer, GrGLenum GrGLinternalformat, - GrGLsizei width, GrGLsizei height) override { - SK_ABORT("Not implemented"); - } - - GrGLvoid namedRenderbufferStorageMultisample(GrGLuint renderbuffer, GrGLsizei samples, - GrGLenum GrGLinternalformat, GrGLsizei width, - GrGLsizei height) override { - SK_ABORT("Not implemented"); - } - GrGLvoid framebufferRenderbuffer(GrGLenum target, GrGLenum attachment, GrGLenum renderbuffertarget, @@ -438,12 +410,6 @@ public: } - GrGLvoid namedFramebufferRenderbuffer(GrGLuint framebuffer, GrGLenum attachment, - GrGLenum renderbuffertarget, - GrGLuint renderbuffer) override { - SK_ABORT("Not implemented"); - } - //////////////////////////////////////////////////////////////////////////////// GrGLvoid framebufferTexture2D(GrGLenum target, GrGLenum attachment, GrGLenum textarget, GrGLuint textureID, GrGLint level) override { @@ -484,30 +450,6 @@ public: }; } - GrGLvoid framebufferTexture2DMultisample(GrGLenum target, GrGLenum attachment, - GrGLenum textarget, GrGLuint texture, GrGLint level, - GrGLsizei samples) override { - SK_ABORT("Not implemented"); - } - - GrGLvoid namedFramebufferTexture1D(GrGLuint framebuffer, GrGLenum attachment, - GrGLenum textarget, GrGLuint texture, - GrGLint level) override { - SK_ABORT("Not implemented"); - } - - GrGLvoid namedFramebufferTexture2D(GrGLuint framebuffer, GrGLenum attachment, - GrGLenum textarget, GrGLuint texture, - GrGLint level) override { - SK_ABORT("Not implemented"); - } - - GrGLvoid namedFramebufferTexture3D(GrGLuint framebuffer, GrGLenum attachment, - GrGLenum textarget, GrGLuint texture, GrGLint level, - GrGLint zoffset) override { - SK_ABORT("Not implemented"); - } - GrGLuint createProgram() override { GrProgramObj *program = CREATE(GrProgramObj, kProgram_ObjTypes); @@ -588,26 +530,9 @@ public: case GR_GL_STENCIL_BITS: *params = 8; break; - case GR_GL_SAMPLES: { - GrFrameBufferObj* framebuffer = this->getFrameBuffer(); - GrAlwaysAssert(framebuffer); - int numSamples = 0; - - if (GrFBBindableObj* stencil = framebuffer->getStencil()) { - numSamples = stencil->numSamples(); - } - if (GrFBBindableObj* depth = framebuffer->getDepth()) { - GrAlwaysAssert(!numSamples || numSamples == depth->numSamples()); - numSamples = depth->numSamples(); - } - if (GrFBBindableObj* color = framebuffer->getColor()) { - GrAlwaysAssert(!numSamples || numSamples == color->numSamples()); - numSamples = color->numSamples(); - } - GrAlwaysAssert(numSamples); - *params = numSamples; + case GR_GL_SAMPLES: + *params = 1; break; - } case GR_GL_FRAMEBUFFER_BINDING: *params = 0; break; diff --git a/tools/gpu/gl/debug/GrFBBindableObj.h b/tools/gpu/gl/debug/GrFBBindableObj.h index f5b46ab..e2b43a6 100644 --- a/tools/gpu/gl/debug/GrFBBindableObj.h +++ b/tools/gpu/gl/debug/GrFBBindableObj.h @@ -18,8 +18,7 @@ class GrFBBindableObj : public GrFakeRefObj { public: GrFBBindableObj() - : GrFakeRefObj() - , fNumSamples(1) { + : GrFakeRefObj() { } virtual ~GrFBBindableObj() { @@ -76,11 +75,8 @@ public: return 0 != fStencilReferees.count(); } - int numSamples() { return fNumSamples; } protected: - int fNumSamples; - private: SkTDArray fColorReferees; // frame buffers that use this as a color buffer (via "glFramebufferRenderbuffer" or "glFramebufferTexture2D") SkTDArray fDepthReferees; // frame buffers that use this as a depth buffer (via "glFramebufferRenderbuffer" or "glFramebufferTexture2D") diff --git a/tools/gpu/gl/debug/GrRenderBufferObj.h b/tools/gpu/gl/debug/GrRenderBufferObj.h index 134b9ec..8231ef5 100644 --- a/tools/gpu/gl/debug/GrRenderBufferObj.h +++ b/tools/gpu/gl/debug/GrRenderBufferObj.h @@ -30,11 +30,6 @@ public: this->INHERITED::deleteAction(); } - void setNumSamples(int numSamples) { - GrAlwaysAssert(numSamples > 0); - fNumSamples = numSamples; - } - protected: private: bool fBound; // is this render buffer currently bound via "glBindRenderbuffer"? -- 2.7.4