Commit c90d73a0 by Geoff Lang

Added a new type of binding pointer for framebuffer texture bindings which…

Added a new type of binding pointer for framebuffer texture bindings which stores type, mip level and layer. TRAC #23470 Signed-off-by: Jamie Madill Signed-off-by: Shannon Woods Author: Geoff Lang
parent a49a9bf9
...@@ -48,7 +48,7 @@ class RefCountObjectBindingPointer ...@@ -48,7 +48,7 @@ class RefCountObjectBindingPointer
public: public:
GLuint id() const { return (mObject != NULL) ? mObject->id() : 0; } GLuint id() const { return (mObject != NULL) ? mObject->id() : 0; }
bool operator ! () const { return (get() == NULL); } bool operator!() const { return (get() == NULL); }
private: private:
RefCountObject *mObject; RefCountObject *mObject;
...@@ -60,7 +60,34 @@ class BindingPointer : public RefCountObjectBindingPointer ...@@ -60,7 +60,34 @@ class BindingPointer : public RefCountObjectBindingPointer
public: public:
void set(ObjectType *newObject) { RefCountObjectBindingPointer::set(newObject); } void set(ObjectType *newObject) { RefCountObjectBindingPointer::set(newObject); }
ObjectType *get() const { return static_cast<ObjectType*>(RefCountObjectBindingPointer::get()); } ObjectType *get() const { return static_cast<ObjectType*>(RefCountObjectBindingPointer::get()); }
ObjectType *operator -> () const { return get(); } ObjectType *operator->() const { return get(); }
};
template <class ObjectType>
class FramebufferTextureBindingPointer : public RefCountObjectBindingPointer
{
public:
FramebufferTextureBindingPointer() : mType(GL_NONE), mMipLevel(0), mLayer(0) { }
void set(ObjectType *newObject, GLenum type, GLint mipLevel, GLint layer)
{
RefCountObjectBindingPointer::set(newObject);
mType = type;
mMipLevel = mipLevel;
mLayer = layer;
}
ObjectType *get() const { return static_cast<ObjectType*>(RefCountObjectBindingPointer::get()); }
ObjectType *operator->() const { return get(); }
GLenum type() const { return mType; }
GLint mipLevel() const { return mMipLevel; }
GLint layer() const { return mLayer; }
private:
GLenum mType;
GLint mMipLevel;
GLint mLayer;
}; };
template <class ObjectType> template <class ObjectType>
...@@ -84,7 +111,7 @@ class OffsetBindingPointer : public RefCountObjectBindingPointer ...@@ -84,7 +111,7 @@ class OffsetBindingPointer : public RefCountObjectBindingPointer
} }
ObjectType *get() const { return static_cast<ObjectType*>(RefCountObjectBindingPointer::get()); } ObjectType *get() const { return static_cast<ObjectType*>(RefCountObjectBindingPointer::get()); }
ObjectType *operator -> () const { return get(); } ObjectType *operator->() const { return get(); }
private: private:
GLintptr mOffset; GLintptr mOffset;
......
...@@ -64,6 +64,16 @@ class Framebuffer ...@@ -64,6 +64,16 @@ class Framebuffer
GLuint getStencilbufferHandle() const; GLuint getStencilbufferHandle() const;
GLenum getDepthStencilbufferHandle() const; GLenum getDepthStencilbufferHandle() const;
GLenum getColorbufferMipLevel(unsigned int colorAttachment) const;
GLenum getDepthbufferMipLevel() const;
GLenum getStencilbufferMipLevel() const;
GLenum getDepthStencilbufferMipLevel() const;
GLenum getColorbufferLayer(unsigned int colorAttachment) const;
GLenum getDepthbufferLayer() const;
GLenum getStencilbufferLayer() const;
GLenum getDepthStencilbufferLayer() const;
GLenum getDrawBufferState(unsigned int colorAttachment) const; GLenum getDrawBufferState(unsigned int colorAttachment) const;
void setDrawBufferState(unsigned int colorAttachment, GLenum drawBuffer); void setDrawBufferState(unsigned int colorAttachment, GLenum drawBuffer);
...@@ -76,16 +86,12 @@ class Framebuffer ...@@ -76,16 +86,12 @@ class Framebuffer
virtual GLenum completeness() const; virtual GLenum completeness() const;
protected: protected:
GLenum mColorbufferTypes[IMPLEMENTATION_MAX_DRAW_BUFFERS]; FramebufferTextureBindingPointer<Renderbuffer> mColorbuffers[IMPLEMENTATION_MAX_DRAW_BUFFERS];
BindingPointer<Renderbuffer> mColorbufferPointers[IMPLEMENTATION_MAX_DRAW_BUFFERS];
GLenum mDrawBufferStates[IMPLEMENTATION_MAX_DRAW_BUFFERS]; GLenum mDrawBufferStates[IMPLEMENTATION_MAX_DRAW_BUFFERS];
GLenum mReadBufferState; GLenum mReadBufferState;
GLenum mDepthbufferType; FramebufferTextureBindingPointer<Renderbuffer> mDepthbuffer;
BindingPointer<Renderbuffer> mDepthbufferPointer; FramebufferTextureBindingPointer<Renderbuffer> mStencilbuffer;
GLenum mStencilbufferType;
BindingPointer<Renderbuffer> mStencilbufferPointer;
rx::Renderer *mRenderer; rx::Renderer *mRenderer;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment