summaryrefslogtreecommitdiffstats
path: root/src/3rdparty/angle/src/libGLESv2/Framebuffer.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/3rdparty/angle/src/libGLESv2/Framebuffer.h')
-rw-r--r--src/3rdparty/angle/src/libGLESv2/Framebuffer.h62
1 files changed, 28 insertions, 34 deletions
diff --git a/src/3rdparty/angle/src/libGLESv2/Framebuffer.h b/src/3rdparty/angle/src/libGLESv2/Framebuffer.h
index 50bfd4fd0f..035e16fa45 100644
--- a/src/3rdparty/angle/src/libGLESv2/Framebuffer.h
+++ b/src/3rdparty/angle/src/libGLESv2/Framebuffer.h
@@ -12,7 +12,7 @@
#include "common/angleutils.h"
#include "common/RefCountObject.h"
-#include "Constants.h"
+#include "constants.h"
namespace rx
{
@@ -21,7 +21,7 @@ class Renderer;
namespace gl
{
-class Renderbuffer;
+class FramebufferAttachment;
class Colorbuffer;
class Depthbuffer;
class Stencilbuffer;
@@ -30,36 +30,30 @@ class DepthStencilbuffer;
class Framebuffer
{
public:
- explicit Framebuffer(rx::Renderer *renderer);
+ Framebuffer(rx::Renderer *renderer, GLuint id);
virtual ~Framebuffer();
- void setColorbuffer(unsigned int colorAttachment, GLenum type, GLuint colorbuffer);
- void setDepthbuffer(GLenum type, GLuint depthbuffer);
- void setStencilbuffer(GLenum type, GLuint stencilbuffer);
+ GLuint id() const { return mId; }
+
+ void setColorbuffer(unsigned int colorAttachment, GLenum type, GLuint colorbuffer, GLint level, GLint layer);
+ void setDepthbuffer(GLenum type, GLuint depthbuffer, GLint level, GLint layer);
+ void setStencilbuffer(GLenum type, GLuint stencilbuffer, GLint level, GLint layer);
+ void setDepthStencilBuffer(GLenum type, GLuint depthStencilBuffer, GLint level, GLint layer);
void detachTexture(GLuint texture);
void detachRenderbuffer(GLuint renderbuffer);
- unsigned int getRenderTargetSerial(unsigned int colorAttachment) const;
- unsigned int getDepthbufferSerial() const;
- unsigned int getStencilbufferSerial() const;
-
- Renderbuffer *getColorbuffer(unsigned int colorAttachment) const;
- Renderbuffer *getDepthbuffer() const;
- Renderbuffer *getStencilbuffer() const;
- Renderbuffer *getDepthOrStencilbuffer() const;
- Renderbuffer *getReadColorbuffer() const;
+ FramebufferAttachment *getColorbuffer(unsigned int colorAttachment) const;
+ FramebufferAttachment *getDepthbuffer() const;
+ FramebufferAttachment *getStencilbuffer() const;
+ FramebufferAttachment *getDepthStencilBuffer() const;
+ FramebufferAttachment *getDepthOrStencilbuffer() const;
+ FramebufferAttachment *getReadColorbuffer() const;
GLenum getReadColorbufferType() const;
- Renderbuffer *getFirstColorbuffer() const;
-
- GLenum getColorbufferType(unsigned int colorAttachment) const;
- GLenum getDepthbufferType() const;
- GLenum getStencilbufferType() const;
+ FramebufferAttachment *getFirstColorbuffer() const;
- GLuint getColorbufferHandle(unsigned int colorAttachment) const;
- GLuint getDepthbufferHandle() const;
- GLuint getStencilbufferHandle() const;
+ virtual FramebufferAttachment *getAttachment(GLenum attachment) const;
GLenum getDrawBufferState(unsigned int colorAttachment) const;
void setDrawBufferState(unsigned int colorAttachment, GLenum drawBuffer);
@@ -71,25 +65,24 @@ class Framebuffer
bool usingExtendedDrawBuffers() const;
virtual GLenum completeness() const;
+ bool hasValidDepthStencil() const;
protected:
- GLenum mColorbufferTypes[IMPLEMENTATION_MAX_DRAW_BUFFERS];
- BindingPointer<Renderbuffer> mColorbufferPointers[IMPLEMENTATION_MAX_DRAW_BUFFERS];
- GLenum mDrawBufferStates[IMPLEMENTATION_MAX_DRAW_BUFFERS];
- GLenum mReadBufferState;
+ rx::Renderer *mRenderer;
- GLenum mDepthbufferType;
- BindingPointer<Renderbuffer> mDepthbufferPointer;
+ GLuint mId;
- GLenum mStencilbufferType;
- BindingPointer<Renderbuffer> mStencilbufferPointer;
+ FramebufferAttachment *mColorbuffers[IMPLEMENTATION_MAX_DRAW_BUFFERS];
+ GLenum mDrawBufferStates[IMPLEMENTATION_MAX_DRAW_BUFFERS];
+ GLenum mReadBufferState;
- rx::Renderer *mRenderer;
+ FramebufferAttachment *mDepthbuffer;
+ FramebufferAttachment *mStencilbuffer;
- private:
+private:
DISALLOW_COPY_AND_ASSIGN(Framebuffer);
- Renderbuffer *lookupRenderbuffer(GLenum type, GLuint handle) const;
+ FramebufferAttachment *createAttachment(GLenum type, GLuint handle, GLint level, GLint layer) const;
};
class DefaultFramebuffer : public Framebuffer
@@ -98,6 +91,7 @@ class DefaultFramebuffer : public Framebuffer
DefaultFramebuffer(rx::Renderer *Renderer, Colorbuffer *colorbuffer, DepthStencilbuffer *depthStencil);
virtual GLenum completeness() const;
+ virtual FramebufferAttachment *getAttachment(GLenum attachment) const;
private:
DISALLOW_COPY_AND_ASSIGN(DefaultFramebuffer);