diff options
author | Jamie Madill <jmadill@chromium.org> | 2014-09-12 13:26:55 -0400 |
---|---|---|
committer | Jamie Madill <jmadill@chromium.org> | 2014-09-12 21:06:54 +0000 |
commit | 612e2e4490ac8baac7da12de599e94d21a62538a (patch) | |
tree | a67c8afc98b8b4f7cce0ef00acc1ac511ce6afce /src/libGLESv2/renderer | |
parent | 9f0b42a6ab87ae2b2f065cf022497ac6deabf3fd (diff) | |
download | angle-612e2e4490ac8baac7da12de599e94d21a62538a.tar.gz |
Add a helper to replace FBO attachment's getSerial.
Ideally we could store a render target serial in the render target
itself. For now, this helper function allows us to finally stop
exposing rx::RenderTarget from gl::Texture.
BUG=angle:732
Change-Id: I4ffc5e0af6f0542212ad4e74adced21ebbd89462
Reviewed-on: https://chromium-review.googlesource.com/217330
Reviewed-by: Shannon Woods <shannonwoods@chromium.org>
Tested-by: Jamie Madill <jmadill@chromium.org>
Diffstat (limited to 'src/libGLESv2/renderer')
-rw-r--r-- | src/libGLESv2/renderer/TextureImpl.h | 4 | ||||
-rw-r--r-- | src/libGLESv2/renderer/d3d/TextureD3D.h | 18 | ||||
-rw-r--r-- | src/libGLESv2/renderer/d3d/d3d11/Renderer11.cpp | 8 | ||||
-rw-r--r-- | src/libGLESv2/renderer/d3d/d3d9/Renderer9.cpp | 6 |
4 files changed, 16 insertions, 20 deletions
diff --git a/src/libGLESv2/renderer/TextureImpl.h b/src/libGLESv2/renderer/TextureImpl.h index c34485a3..9ac3ec14 100644 --- a/src/libGLESv2/renderer/TextureImpl.h +++ b/src/libGLESv2/renderer/TextureImpl.h @@ -29,7 +29,6 @@ namespace rx { class Image; -class RenderTarget; class Renderer; class TextureStorageInterface; @@ -58,9 +57,6 @@ class TextureImpl virtual void generateMipmaps() = 0; - virtual unsigned int getRenderTargetSerial(GLint level, GLint layer) = 0; - virtual RenderTarget *getRenderTarget(GLint level, GLint layer) = 0; - virtual void bindTexImage(egl::Surface *surface) = 0; virtual void releaseTexImage() = 0; }; diff --git a/src/libGLESv2/renderer/d3d/TextureD3D.h b/src/libGLESv2/renderer/d3d/TextureD3D.h index 7f216307..e8fbe846 100644 --- a/src/libGLESv2/renderer/d3d/TextureD3D.h +++ b/src/libGLESv2/renderer/d3d/TextureD3D.h @@ -24,6 +24,7 @@ namespace rx class Image; class ImageD3D; class Renderer; +class RenderTarget; class TextureStorageInterface; class TextureStorageInterface2D; class TextureStorageInterfaceCube; @@ -51,6 +52,9 @@ class TextureD3D : public TextureImpl bool isImmutable() const { return mImmutable; } + virtual RenderTarget *getRenderTarget(GLint level, GLint layer) = 0; + virtual unsigned int getRenderTargetSerial(GLint level, GLint layer) = 0; + protected: void setImage(const gl::PixelUnpackState &unpack, GLenum type, const void *pixels, Image *image); bool subImage(GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, @@ -111,9 +115,8 @@ class TextureD3D_2D : public TextureD3D virtual void generateMipmaps(); - virtual unsigned int getRenderTargetSerial(GLint level, GLint layer); - virtual RenderTarget *getRenderTarget(GLint level, GLint layer); + virtual unsigned int getRenderTargetSerial(GLint level, GLint layer); private: DISALLOW_COPY_AND_ASSIGN(TextureD3D_2D); @@ -168,9 +171,8 @@ class TextureD3D_Cube : public TextureD3D virtual void generateMipmaps(); - virtual unsigned int getRenderTargetSerial(GLint level, GLint layer); - virtual RenderTarget *getRenderTarget(GLint level, GLint layer); + virtual unsigned int getRenderTargetSerial(GLint level, GLint layer); private: DISALLOW_COPY_AND_ASSIGN(TextureD3D_Cube); @@ -225,10 +227,9 @@ class TextureD3D_3D : public TextureD3D virtual void generateMipmaps(); - virtual unsigned int getRenderTargetSerial(GLint level, GLint layer); - - virtual RenderTarget *getRenderTarget(GLint level); + RenderTarget *getRenderTarget(GLint level); virtual RenderTarget *getRenderTarget(GLint level, GLint layer); + virtual unsigned int getRenderTargetSerial(GLint level, GLint layer); private: DISALLOW_COPY_AND_ASSIGN(TextureD3D_3D); @@ -282,9 +283,8 @@ class TextureD3D_2DArray : public TextureD3D virtual void generateMipmaps(); - virtual unsigned int getRenderTargetSerial(GLint level, GLint layer); - virtual RenderTarget *getRenderTarget(GLint level, GLint layer); + virtual unsigned int getRenderTargetSerial(GLint level, GLint layer); private: DISALLOW_COPY_AND_ASSIGN(TextureD3D_2DArray); diff --git a/src/libGLESv2/renderer/d3d/d3d11/Renderer11.cpp b/src/libGLESv2/renderer/d3d/d3d11/Renderer11.cpp index 10d6bbef..753a4cae 100644 --- a/src/libGLESv2/renderer/d3d/d3d11/Renderer11.cpp +++ b/src/libGLESv2/renderer/d3d/d3d11/Renderer11.cpp @@ -820,7 +820,7 @@ bool Renderer11::applyRenderTarget(gl::Framebuffer *framebuffer) return false; } - renderTargetSerials[colorAttachment] = colorbuffer->getSerial(); + renderTargetSerials[colorAttachment] = GetAttachmentSerial(colorbuffer); // Extract the render target dimensions and view RenderTarget11 *renderTarget = d3d11::GetAttachmentRenderTarget(colorbuffer); @@ -850,18 +850,18 @@ bool Renderer11::applyRenderTarget(gl::Framebuffer *framebuffer) } } - // Get the depth stencil render buffer and serials + // Get the depth stencil render buffter and serials gl::FramebufferAttachment *depthStencil = framebuffer->getDepthbuffer(); unsigned int depthbufferSerial = 0; unsigned int stencilbufferSerial = 0; if (depthStencil) { - depthbufferSerial = depthStencil->getSerial(); + depthbufferSerial = GetAttachmentSerial(depthStencil); } else if (framebuffer->getStencilbuffer()) { depthStencil = framebuffer->getStencilbuffer(); - stencilbufferSerial = depthStencil->getSerial(); + stencilbufferSerial = GetAttachmentSerial(depthStencil); } ID3D11DepthStencilView* framebufferDSV = NULL; diff --git a/src/libGLESv2/renderer/d3d/d3d9/Renderer9.cpp b/src/libGLESv2/renderer/d3d/d3d9/Renderer9.cpp index 4ae077df..cabec08d 100644 --- a/src/libGLESv2/renderer/d3d/d3d9/Renderer9.cpp +++ b/src/libGLESv2/renderer/d3d/d3d9/Renderer9.cpp @@ -1150,7 +1150,7 @@ bool Renderer9::applyRenderTarget(gl::Framebuffer *framebuffer) } bool renderTargetChanged = false; - unsigned int renderTargetSerial = attachment->getSerial(); + unsigned int renderTargetSerial = GetAttachmentSerial(attachment); if (renderTargetSerial != mAppliedRenderTargetSerial) { // Apply the render target on the device @@ -1180,12 +1180,12 @@ bool Renderer9::applyRenderTarget(gl::Framebuffer *framebuffer) unsigned int stencilbufferSerial = 0; if (depthStencil) { - depthbufferSerial = depthStencil->getSerial(); + depthbufferSerial = GetAttachmentSerial(depthStencil); } else if (framebuffer->getStencilbuffer()) { depthStencil = framebuffer->getStencilbuffer(); - stencilbufferSerial = depthStencil->getSerial(); + stencilbufferSerial = GetAttachmentSerial(depthStencil); } if (depthbufferSerial != mAppliedDepthbufferSerial || |