diff options
author | Shannon Woods <shannonwoods@chromium.org> | 2014-10-30 18:53:29 +0000 |
---|---|---|
committer | Shannon Woods <shannonwoods@chromium.org> | 2014-10-31 01:52:58 +0000 |
commit | f108df24949d3118e45b4e90933449a5ca5a50c1 (patch) | |
tree | fa15559e66ff2367747f6706356b971637554aa8 | |
parent | 2111670b73681b2a4330eb790da9ea0aa1b2b427 (diff) | |
download | angle-f108df24949d3118e45b4e90933449a5ca5a50c1.tar.gz |
Revert "Changes gl::RenderbufferStorage to rx::RenderbufferImpl"
This reverts commit 9fc51d90176dcf4273cd6689968e1ca5d1c9fe16.
Change-Id: I4134ebe5ef6b8f509f4cc5cc22a2d526ec43ef6d
Reviewed-on: https://chromium-review.googlesource.com/226374
Reviewed-by: Shannon Woods <shannonwoods@chromium.org>
Tested-by: Shannon Woods <shannonwoods@chromium.org>
24 files changed, 360 insertions, 445 deletions
diff --git a/projects/src/libANGLE.vcxproj b/projects/src/libANGLE.vcxproj index b198df1b..dcc6a791 100644 --- a/projects/src/libANGLE.vcxproj +++ b/projects/src/libANGLE.vcxproj @@ -290,9 +290,8 @@ <ClInclude Include="..\..\src\libGLESv2\renderer\IndexRangeCache.h"/> <ClInclude Include="..\..\src\libGLESv2\renderer\ProgramImpl.h"/> <ClInclude Include="..\..\src\libGLESv2\renderer\QueryImpl.h"/> - <ClInclude Include="..\..\src\libGLESv2\renderer\RenderbufferImpl.h"/> - <ClInclude Include="..\..\src\libGLESv2\renderer\Renderer.h"/> <ClInclude Include="..\..\src\libGLESv2\renderer\RenderTarget.h"/> + <ClInclude Include="..\..\src\libGLESv2\renderer\Renderer.h"/> <ClInclude Include="..\..\src\libGLESv2\renderer\ShaderExecutable.h"/> <ClInclude Include="..\..\src\libGLESv2\renderer\ShaderImpl.h"/> <ClInclude Include="..\..\src\libGLESv2\renderer\SwapChain.h"/> @@ -320,7 +319,6 @@ <ClInclude Include="..\..\src\libGLESv2\renderer\d3d\IndexDataManager.h"/> <ClInclude Include="..\..\src\libGLESv2\renderer\d3d\MemoryBuffer.h"/> <ClInclude Include="..\..\src\libGLESv2\renderer\d3d\ProgramD3D.h"/> - <ClInclude Include="..\..\src\libGLESv2\renderer\d3d\RenderbufferD3D.h"/> <ClInclude Include="..\..\src\libGLESv2\renderer\d3d\ShaderD3D.h"/> <ClInclude Include="..\..\src\libGLESv2\renderer\d3d\TextureD3D.h"/> <ClInclude Include="..\..\src\libGLESv2\renderer\d3d\TextureStorage.h"/> @@ -459,7 +457,6 @@ <ClCompile Include="..\..\src\libGLESv2\renderer\Image.cpp"/> <ClCompile Include="..\..\src\libGLESv2\renderer\IndexRangeCache.cpp"/> <ClCompile Include="..\..\src\libGLESv2\renderer\ProgramImpl.cpp"/> - <ClCompile Include="..\..\src\libGLESv2\renderer\RenderbufferImpl.cpp"/> <ClCompile Include="..\..\src\libGLESv2\renderer\Renderer.cpp"/> <ClCompile Include="..\..\src\libGLESv2\renderer\copyimage.cpp"/> <ClCompile Include="..\..\src\libGLESv2\renderer\loadimage.cpp"/> @@ -477,7 +474,6 @@ <ClCompile Include="..\..\src\libGLESv2\renderer\d3d\IndexDataManager.cpp"/> <ClCompile Include="..\..\src\libGLESv2\renderer\d3d\MemoryBuffer.cpp"/> <ClCompile Include="..\..\src\libGLESv2\renderer\d3d\ProgramD3D.cpp"/> - <ClCompile Include="..\..\src\libGLESv2\renderer\d3d\RenderbufferD3D.cpp"/> <ClCompile Include="..\..\src\libGLESv2\renderer\d3d\ShaderD3D.cpp"/> <ClCompile Include="..\..\src\libGLESv2\renderer\d3d\TextureD3D.cpp"/> <ClCompile Include="..\..\src\libGLESv2\renderer\d3d\TextureStorage.cpp"/> diff --git a/projects/src/libANGLE.vcxproj.filters b/projects/src/libANGLE.vcxproj.filters index 8c68ad87..158c020f 100644 --- a/projects/src/libANGLE.vcxproj.filters +++ b/projects/src/libANGLE.vcxproj.filters @@ -820,24 +820,6 @@ <Filter Include="src\libGLESv2"> <UniqueIdentifier>{A62A9415-2E9D-A6D2-631D-1F25A5CD626F}</UniqueIdentifier> </Filter> - <Filter Include="src\libGLESv2\renderer"> - <UniqueIdentifier>{AC4EF684-2900-10EA-3D11-A6DF0901358C}</UniqueIdentifier> - </Filter> - <Filter Include="src"> - <UniqueIdentifier>{8CDEE807-BC53-E450-C8B8-4DEBB66742D4}</UniqueIdentifier> - </Filter> - <Filter Include="src\libGLESv2"> - <UniqueIdentifier>{A62A9415-2E9D-A6D2-631D-1F25A5CD626F}</UniqueIdentifier> - </Filter> - <Filter Include="src\libGLESv2\renderer"> - <UniqueIdentifier>{AC4EF684-2900-10EA-3D11-A6DF0901358C}</UniqueIdentifier> - </Filter> - <Filter Include="src"> - <UniqueIdentifier>{8CDEE807-BC53-E450-C8B8-4DEBB66742D4}</UniqueIdentifier> - </Filter> - <Filter Include="src\libGLESv2"> - <UniqueIdentifier>{A62A9415-2E9D-A6D2-631D-1F25A5CD626F}</UniqueIdentifier> - </Filter> <Filter Include="src"> <UniqueIdentifier>{8CDEE807-BC53-E450-C8B8-4DEBB66742D4}</UniqueIdentifier> </Filter> @@ -1258,30 +1240,6 @@ <Filter Include="src\libGLESv2\renderer\d3d"> <UniqueIdentifier>{3AC19AE3-A12C-4021-D645-4CEA5BC956DB}</UniqueIdentifier> </Filter> - <Filter Include="src"> - <UniqueIdentifier>{8CDEE807-BC53-E450-C8B8-4DEBB66742D4}</UniqueIdentifier> - </Filter> - <Filter Include="src\libGLESv2"> - <UniqueIdentifier>{A62A9415-2E9D-A6D2-631D-1F25A5CD626F}</UniqueIdentifier> - </Filter> - <Filter Include="src\libGLESv2\renderer"> - <UniqueIdentifier>{AC4EF684-2900-10EA-3D11-A6DF0901358C}</UniqueIdentifier> - </Filter> - <Filter Include="src\libGLESv2\renderer\d3d"> - <UniqueIdentifier>{3AC19AE3-A12C-4021-D645-4CEA5BC956DB}</UniqueIdentifier> - </Filter> - <Filter Include="src"> - <UniqueIdentifier>{8CDEE807-BC53-E450-C8B8-4DEBB66742D4}</UniqueIdentifier> - </Filter> - <Filter Include="src\libGLESv2"> - <UniqueIdentifier>{A62A9415-2E9D-A6D2-631D-1F25A5CD626F}</UniqueIdentifier> - </Filter> - <Filter Include="src\libGLESv2\renderer"> - <UniqueIdentifier>{AC4EF684-2900-10EA-3D11-A6DF0901358C}</UniqueIdentifier> - </Filter> - <Filter Include="src\libGLESv2\renderer\d3d"> - <UniqueIdentifier>{3AC19AE3-A12C-4021-D645-4CEA5BC956DB}</UniqueIdentifier> - </Filter> <Filter Include="src\libGLESv2\renderer\d3d\d3d9"> <UniqueIdentifier>{8BB193D2-4A8B-A094-A81E-D5E262AB1F92}</UniqueIdentifier> </Filter> @@ -3792,21 +3750,15 @@ <ClInclude Include="..\..\src\libGLESv2\renderer\QueryImpl.h"> <Filter>src\libGLESv2\renderer</Filter> </ClInclude> - <ClInclude Include="..\..\src\libGLESv2\renderer\RenderbufferImpl.h"> + <ClInclude Include="..\..\src\libGLESv2\renderer\RenderTarget.h"> <Filter>src\libGLESv2\renderer</Filter> </ClInclude> - <ClCompile Include="..\..\src\libGLESv2\renderer\RenderbufferImpl.cpp"> - <Filter>src\libGLESv2\renderer</Filter> - </ClCompile> <ClCompile Include="..\..\src\libGLESv2\renderer\Renderer.cpp"> <Filter>src\libGLESv2\renderer</Filter> </ClCompile> <ClInclude Include="..\..\src\libGLESv2\renderer\Renderer.h"> <Filter>src\libGLESv2\renderer</Filter> </ClInclude> - <ClInclude Include="..\..\src\libGLESv2\renderer\RenderTarget.h"> - <Filter>src\libGLESv2\renderer</Filter> - </ClInclude> <ClInclude Include="..\..\src\libGLESv2\renderer\ShaderExecutable.h"> <Filter>src\libGLESv2\renderer</Filter> </ClInclude> @@ -3948,12 +3900,6 @@ <ClInclude Include="..\..\src\libGLESv2\renderer\d3d\ProgramD3D.h"> <Filter>src\libGLESv2\renderer\d3d</Filter> </ClInclude> - <ClCompile Include="..\..\src\libGLESv2\renderer\d3d\RenderbufferD3D.cpp"> - <Filter>src\libGLESv2\renderer\d3d</Filter> - </ClCompile> - <ClInclude Include="..\..\src\libGLESv2\renderer\d3d\RenderbufferD3D.h"> - <Filter>src\libGLESv2\renderer\d3d</Filter> - </ClInclude> <ClCompile Include="..\..\src\libGLESv2\renderer\d3d\ShaderD3D.cpp"> <Filter>src\libGLESv2\renderer\d3d</Filter> </ClCompile> diff --git a/projects/winrt/windows/src/libANGLE.vcxproj b/projects/winrt/windows/src/libANGLE.vcxproj index a79ad312..dc8bc3b9 100644 --- a/projects/winrt/windows/src/libANGLE.vcxproj +++ b/projects/winrt/windows/src/libANGLE.vcxproj @@ -403,9 +403,8 @@ <ClInclude Include="..\..\..\..\src\libGLESv2\renderer\IndexRangeCache.h"/> <ClInclude Include="..\..\..\..\src\libGLESv2\renderer\ProgramImpl.h"/> <ClInclude Include="..\..\..\..\src\libGLESv2\renderer\QueryImpl.h"/> - <ClInclude Include="..\..\..\..\src\libGLESv2\renderer\RenderbufferImpl.h"/> - <ClInclude Include="..\..\..\..\src\libGLESv2\renderer\Renderer.h"/> <ClInclude Include="..\..\..\..\src\libGLESv2\renderer\RenderTarget.h"/> + <ClInclude Include="..\..\..\..\src\libGLESv2\renderer\Renderer.h"/> <ClInclude Include="..\..\..\..\src\libGLESv2\renderer\ShaderExecutable.h"/> <ClInclude Include="..\..\..\..\src\libGLESv2\renderer\ShaderImpl.h"/> <ClInclude Include="..\..\..\..\src\libGLESv2\renderer\SwapChain.h"/> @@ -433,7 +432,6 @@ <ClInclude Include="..\..\..\..\src\libGLESv2\renderer\d3d\IndexDataManager.h"/> <ClInclude Include="..\..\..\..\src\libGLESv2\renderer\d3d\MemoryBuffer.h"/> <ClInclude Include="..\..\..\..\src\libGLESv2\renderer\d3d\ProgramD3D.h"/> - <ClInclude Include="..\..\..\..\src\libGLESv2\renderer\d3d\RenderbufferD3D.h"/> <ClInclude Include="..\..\..\..\src\libGLESv2\renderer\d3d\ShaderD3D.h"/> <ClInclude Include="..\..\..\..\src\libGLESv2\renderer\d3d\TextureD3D.h"/> <ClInclude Include="..\..\..\..\src\libGLESv2\renderer\d3d\TextureStorage.h"/> @@ -553,7 +551,6 @@ <ClCompile Include="..\..\..\..\src\libGLESv2\renderer\Image.cpp"/> <ClCompile Include="..\..\..\..\src\libGLESv2\renderer\IndexRangeCache.cpp"/> <ClCompile Include="..\..\..\..\src\libGLESv2\renderer\ProgramImpl.cpp"/> - <ClCompile Include="..\..\..\..\src\libGLESv2\renderer\RenderbufferImpl.cpp"/> <ClCompile Include="..\..\..\..\src\libGLESv2\renderer\Renderer.cpp"/> <ClCompile Include="..\..\..\..\src\libGLESv2\renderer\copyimage.cpp"/> <ClCompile Include="..\..\..\..\src\libGLESv2\renderer\loadimage.cpp"/> @@ -571,7 +568,6 @@ <ClCompile Include="..\..\..\..\src\libGLESv2\renderer\d3d\IndexDataManager.cpp"/> <ClCompile Include="..\..\..\..\src\libGLESv2\renderer\d3d\MemoryBuffer.cpp"/> <ClCompile Include="..\..\..\..\src\libGLESv2\renderer\d3d\ProgramD3D.cpp"/> - <ClCompile Include="..\..\..\..\src\libGLESv2\renderer\d3d\RenderbufferD3D.cpp"/> <ClCompile Include="..\..\..\..\src\libGLESv2\renderer\d3d\ShaderD3D.cpp"/> <ClCompile Include="..\..\..\..\src\libGLESv2\renderer\d3d\TextureD3D.cpp"/> <ClCompile Include="..\..\..\..\src\libGLESv2\renderer\d3d\TextureStorage.cpp"/> diff --git a/projects/winrt/windows/src/libANGLE.vcxproj.filters b/projects/winrt/windows/src/libANGLE.vcxproj.filters index 2a52d90b..b8302bac 100644 --- a/projects/winrt/windows/src/libANGLE.vcxproj.filters +++ b/projects/winrt/windows/src/libANGLE.vcxproj.filters @@ -820,24 +820,6 @@ <Filter Include="src\libGLESv2"> <UniqueIdentifier>{A62A9415-2E9D-A6D2-631D-1F25A5CD626F}</UniqueIdentifier> </Filter> - <Filter Include="src\libGLESv2\renderer"> - <UniqueIdentifier>{AC4EF684-2900-10EA-3D11-A6DF0901358C}</UniqueIdentifier> - </Filter> - <Filter Include="src"> - <UniqueIdentifier>{8CDEE807-BC53-E450-C8B8-4DEBB66742D4}</UniqueIdentifier> - </Filter> - <Filter Include="src\libGLESv2"> - <UniqueIdentifier>{A62A9415-2E9D-A6D2-631D-1F25A5CD626F}</UniqueIdentifier> - </Filter> - <Filter Include="src\libGLESv2\renderer"> - <UniqueIdentifier>{AC4EF684-2900-10EA-3D11-A6DF0901358C}</UniqueIdentifier> - </Filter> - <Filter Include="src"> - <UniqueIdentifier>{8CDEE807-BC53-E450-C8B8-4DEBB66742D4}</UniqueIdentifier> - </Filter> - <Filter Include="src\libGLESv2"> - <UniqueIdentifier>{A62A9415-2E9D-A6D2-631D-1F25A5CD626F}</UniqueIdentifier> - </Filter> <Filter Include="src"> <UniqueIdentifier>{8CDEE807-BC53-E450-C8B8-4DEBB66742D4}</UniqueIdentifier> </Filter> @@ -1258,30 +1240,6 @@ <Filter Include="src\libGLESv2\renderer\d3d"> <UniqueIdentifier>{3AC19AE3-A12C-4021-D645-4CEA5BC956DB}</UniqueIdentifier> </Filter> - <Filter Include="src"> - <UniqueIdentifier>{8CDEE807-BC53-E450-C8B8-4DEBB66742D4}</UniqueIdentifier> - </Filter> - <Filter Include="src\libGLESv2"> - <UniqueIdentifier>{A62A9415-2E9D-A6D2-631D-1F25A5CD626F}</UniqueIdentifier> - </Filter> - <Filter Include="src\libGLESv2\renderer"> - <UniqueIdentifier>{AC4EF684-2900-10EA-3D11-A6DF0901358C}</UniqueIdentifier> - </Filter> - <Filter Include="src\libGLESv2\renderer\d3d"> - <UniqueIdentifier>{3AC19AE3-A12C-4021-D645-4CEA5BC956DB}</UniqueIdentifier> - </Filter> - <Filter Include="src"> - <UniqueIdentifier>{8CDEE807-BC53-E450-C8B8-4DEBB66742D4}</UniqueIdentifier> - </Filter> - <Filter Include="src\libGLESv2"> - <UniqueIdentifier>{A62A9415-2E9D-A6D2-631D-1F25A5CD626F}</UniqueIdentifier> - </Filter> - <Filter Include="src\libGLESv2\renderer"> - <UniqueIdentifier>{AC4EF684-2900-10EA-3D11-A6DF0901358C}</UniqueIdentifier> - </Filter> - <Filter Include="src\libGLESv2\renderer\d3d"> - <UniqueIdentifier>{3AC19AE3-A12C-4021-D645-4CEA5BC956DB}</UniqueIdentifier> - </Filter> <Filter Include="src\libGLESv2\renderer\d3d\d3d11"> <UniqueIdentifier>{10FB1414-88D2-B512-6D76-522749905268}</UniqueIdentifier> </Filter> @@ -3249,21 +3207,15 @@ <ClInclude Include="..\..\..\..\src\libGLESv2\renderer\QueryImpl.h"> <Filter>src\libGLESv2\renderer</Filter> </ClInclude> - <ClInclude Include="..\..\..\..\src\libGLESv2\renderer\RenderbufferImpl.h"> + <ClInclude Include="..\..\..\..\src\libGLESv2\renderer\RenderTarget.h"> <Filter>src\libGLESv2\renderer</Filter> </ClInclude> - <ClCompile Include="..\..\..\..\src\libGLESv2\renderer\RenderbufferImpl.cpp"> - <Filter>src\libGLESv2\renderer</Filter> - </ClCompile> <ClCompile Include="..\..\..\..\src\libGLESv2\renderer\Renderer.cpp"> <Filter>src\libGLESv2\renderer</Filter> </ClCompile> <ClInclude Include="..\..\..\..\src\libGLESv2\renderer\Renderer.h"> <Filter>src\libGLESv2\renderer</Filter> </ClInclude> - <ClInclude Include="..\..\..\..\src\libGLESv2\renderer\RenderTarget.h"> - <Filter>src\libGLESv2\renderer</Filter> - </ClInclude> <ClInclude Include="..\..\..\..\src\libGLESv2\renderer\ShaderExecutable.h"> <Filter>src\libGLESv2\renderer</Filter> </ClInclude> @@ -3405,12 +3357,6 @@ <ClInclude Include="..\..\..\..\src\libGLESv2\renderer\d3d\ProgramD3D.h"> <Filter>src\libGLESv2\renderer\d3d</Filter> </ClInclude> - <ClCompile Include="..\..\..\..\src\libGLESv2\renderer\d3d\RenderbufferD3D.cpp"> - <Filter>src\libGLESv2\renderer\d3d</Filter> - </ClCompile> - <ClInclude Include="..\..\..\..\src\libGLESv2\renderer\d3d\RenderbufferD3D.h"> - <Filter>src\libGLESv2\renderer\d3d</Filter> - </ClInclude> <ClCompile Include="..\..\..\..\src\libGLESv2\renderer\d3d\ShaderD3D.cpp"> <Filter>src\libGLESv2\renderer\d3d</Filter> </ClCompile> diff --git a/src/libGLESv2.gypi b/src/libGLESv2.gypi index b65c6224..02740ff7 100644 --- a/src/libGLESv2.gypi +++ b/src/libGLESv2.gypi @@ -105,11 +105,9 @@ 'libGLESv2/renderer/ProgramImpl.cpp', 'libGLESv2/renderer/ProgramImpl.h', 'libGLESv2/renderer/QueryImpl.h', - 'libGLESv2/renderer/RenderbufferImpl.h', - 'libGLESv2/renderer/RenderbufferImpl.cpp', + 'libGLESv2/renderer/RenderTarget.h', 'libGLESv2/renderer/Renderer.cpp', 'libGLESv2/renderer/Renderer.h', - 'libGLESv2/renderer/RenderTarget.h', 'libGLESv2/renderer/ShaderExecutable.h', 'libGLESv2/renderer/ShaderImpl.h', 'libGLESv2/renderer/SwapChain.h', @@ -172,8 +170,6 @@ 'libGLESv2/renderer/d3d/MemoryBuffer.h', 'libGLESv2/renderer/d3d/ProgramD3D.cpp', 'libGLESv2/renderer/d3d/ProgramD3D.h', - 'libGLESv2/renderer/d3d/RenderbufferD3D.cpp', - 'libGLESv2/renderer/d3d/RenderbufferD3D.h', 'libGLESv2/renderer/d3d/ShaderD3D.cpp', 'libGLESv2/renderer/d3d/ShaderD3D.h', 'libGLESv2/renderer/d3d/TextureD3D.cpp', diff --git a/src/libGLESv2/Context.cpp b/src/libGLESv2/Context.cpp index e2156967..b6b54721 100644 --- a/src/libGLESv2/Context.cpp +++ b/src/libGLESv2/Context.cpp @@ -192,8 +192,8 @@ void Context::makeCurrent(egl::Surface *surface) // Wrap the existing swapchain resources into GL objects and assign them to the '0' names rx::SwapChain *swapchain = surface->getSwapChain(); - rx::RenderbufferImpl *colorbufferZero = mRenderer->createRenderbuffer(swapchain, false); - rx::RenderbufferImpl *depthStencilbufferZero = mRenderer->createRenderbuffer(swapchain, true); + Colorbuffer *colorbufferZero = new Colorbuffer(mRenderer, swapchain); + DepthStencilbuffer *depthStencilbufferZero = new DepthStencilbuffer(mRenderer, swapchain); Framebuffer *framebufferZero = new DefaultFramebuffer(mRenderer, colorbufferZero, depthStencilbufferZero); setFramebufferZero(framebufferZero); @@ -728,6 +728,33 @@ void Context::setFramebufferZero(Framebuffer *buffer) mFramebufferMap[0] = buffer; } +void Context::setRenderbufferStorage(GLsizei width, GLsizei height, GLenum internalformat, GLsizei samples) +{ + ASSERT(getTextureCaps().get(internalformat).renderable); + + RenderbufferStorage *renderbuffer = NULL; + + const InternalFormat &formatInfo = GetInternalFormatInfo(internalformat); + if (formatInfo.depthBits > 0 && formatInfo.stencilBits > 0) + { + renderbuffer = new gl::DepthStencilbuffer(mRenderer, width, height, samples); + } + else if (formatInfo.depthBits > 0) + { + renderbuffer = new gl::Depthbuffer(mRenderer, width, height, samples); + } + else if (formatInfo.stencilBits > 0) + { + renderbuffer = new gl::Stencilbuffer(mRenderer, width, height, samples); + } + else + { + renderbuffer = new gl::Colorbuffer(mRenderer, width, height, internalformat, samples); + } + + mState.getCurrentRenderbuffer()->setStorage(renderbuffer); +} + Framebuffer *Context::getFramebuffer(unsigned int handle) const { FramebufferMap::const_iterator framebuffer = mFramebufferMap.find(handle); diff --git a/src/libGLESv2/Context.h b/src/libGLESv2/Context.h index eb81e1ae..46364bd6 100644 --- a/src/libGLESv2/Context.h +++ b/src/libGLESv2/Context.h @@ -50,6 +50,11 @@ class Texture3D; class Texture2DArray; class Framebuffer; class Renderbuffer; +class RenderbufferStorage; +class Colorbuffer; +class Depthbuffer; +class Stencilbuffer; +class DepthStencilbuffer; class FenceNV; class FenceSync; class Query; @@ -134,6 +139,8 @@ class Context void setFramebufferZero(Framebuffer *framebuffer); + void setRenderbufferStorage(GLsizei width, GLsizei height, GLenum internalformat, GLsizei samples); + void setVertexAttribDivisor(GLuint index, GLuint divisor); void samplerParameteri(GLuint sampler, GLenum pname, GLint param); diff --git a/src/libGLESv2/Framebuffer.cpp b/src/libGLESv2/Framebuffer.cpp index 4587f2b9..9cd9e25c 100644 --- a/src/libGLESv2/Framebuffer.cpp +++ b/src/libGLESv2/Framebuffer.cpp @@ -16,17 +16,13 @@ #include "libGLESv2/FramebufferAttachment.h" #include "libGLESv2/renderer/Renderer.h" #include "libGLESv2/renderer/RenderTarget.h" -#include "libGLESv2/renderer/RenderbufferImpl.h" #include "libGLESv2/renderer/Workarounds.h" #include "libGLESv2/renderer/d3d/TextureD3D.h" -#include "libGLESv2/renderer/d3d/RenderbufferD3D.h" #include "common/utilities.h" namespace rx { -// TODO: Move these functions, and the D3D-specific header inclusions above, -// to FramebufferD3D. gl::Error GetAttachmentRenderTarget(gl::FramebufferAttachment *attachment, RenderTarget **outRT) { if (attachment->isTexture()) @@ -42,8 +38,9 @@ gl::Error GetAttachmentRenderTarget(gl::FramebufferAttachment *attachment, Rende { gl::Renderbuffer *renderbuffer = attachment->getRenderbuffer(); ASSERT(renderbuffer); - RenderbufferD3D *renderbufferD3D = RenderbufferD3D::makeRenderbufferD3D(renderbuffer->getImpl()); - *outRT = renderbufferD3D->getRenderTarget(); + + // TODO: cast to RenderbufferD3D + *outRT = renderbuffer->getStorage()->getRenderTarget(); return gl::Error(GL_NO_ERROR); } } @@ -63,8 +60,9 @@ unsigned int GetAttachmentSerial(gl::FramebufferAttachment *attachment) gl::Renderbuffer *renderbuffer = attachment->getRenderbuffer(); ASSERT(renderbuffer); - RenderbufferD3D *renderbufferD3D = RenderbufferD3D::makeRenderbufferD3D(renderbuffer->getImpl()); - return renderbufferD3D->getSerial(); + + // TODO: cast to RenderbufferD3D + return renderbuffer->getStorage()->getSerial(); } } @@ -640,13 +638,13 @@ Error Framebuffer::invalidateSub(GLsizei numAttachments, const GLenum *attachmen return Error(GL_NO_ERROR); } -DefaultFramebuffer::DefaultFramebuffer(rx::Renderer *renderer, rx::RenderbufferImpl *colorbuffer, rx::RenderbufferImpl *depthStencil) +DefaultFramebuffer::DefaultFramebuffer(rx::Renderer *renderer, Colorbuffer *colorbuffer, DepthStencilbuffer *depthStencil) : Framebuffer(renderer, 0) { - Renderbuffer *colorRenderbuffer = new Renderbuffer(colorbuffer, 0); + Renderbuffer *colorRenderbuffer = new Renderbuffer(0, colorbuffer); mColorbuffers[0] = new RenderbufferAttachment(GL_BACK, colorRenderbuffer); - Renderbuffer *depthStencilBuffer = new Renderbuffer(depthStencil, 0); + Renderbuffer *depthStencilBuffer = new Renderbuffer(0, depthStencil); // Make a new attachment objects to ensure we do not double-delete // See angle issue 686 diff --git a/src/libGLESv2/Framebuffer.h b/src/libGLESv2/Framebuffer.h index c528ce75..1f55b433 100644 --- a/src/libGLESv2/Framebuffer.h +++ b/src/libGLESv2/Framebuffer.h @@ -21,12 +21,15 @@ namespace rx { class Renderer; -class RenderbufferImpl; } namespace gl { class FramebufferAttachment; +class Colorbuffer; +class Depthbuffer; +class Stencilbuffer; +class DepthStencilbuffer; struct Caps; typedef std::vector<FramebufferAttachment *> ColorbufferInfo; @@ -100,7 +103,7 @@ class Framebuffer class DefaultFramebuffer : public Framebuffer { public: - DefaultFramebuffer(rx::Renderer *Renderer, rx::RenderbufferImpl *colorbuffer, rx::RenderbufferImpl *depthStencil); + DefaultFramebuffer(rx::Renderer *Renderer, Colorbuffer *colorbuffer, DepthStencilbuffer *depthStencil); virtual GLenum completeness() const; virtual FramebufferAttachment *getAttachment(GLenum attachment) const; diff --git a/src/libGLESv2/FramebufferAttachment.cpp b/src/libGLESv2/FramebufferAttachment.cpp index 894884a6..540ede1c 100644 --- a/src/libGLESv2/FramebufferAttachment.cpp +++ b/src/libGLESv2/FramebufferAttachment.cpp @@ -187,7 +187,7 @@ GLenum RenderbufferAttachment::getActualFormat() const GLsizei RenderbufferAttachment::getSamples() const { - return mRenderbuffer->getSamples(); + return mRenderbuffer->getStorage()->getSamples(); } GLuint RenderbufferAttachment::id() const diff --git a/src/libGLESv2/Renderbuffer.cpp b/src/libGLESv2/Renderbuffer.cpp index 2931a0b7..9406fce5 100644 --- a/src/libGLESv2/Renderbuffer.cpp +++ b/src/libGLESv2/Renderbuffer.cpp @@ -4,9 +4,9 @@ // found in the LICENSE file. // -// Renderbuffer.cpp: Implements the renderer-agnostic gl::Renderbuffer class, -// GL renderbuffer objects and related functionality. -// [OpenGL ES 2.0.24] section 4.4.3 page 108. +// Renderbuffer.cpp: the gl::Renderbuffer class and its derived classes +// Colorbuffer, Depthbuffer and Stencilbuffer. Implements GL renderbuffer +// objects and related functionality. [OpenGL ES 2.0.24] section 4.4.3 page 108. #include "libGLESv2/Renderbuffer.h" #include "libGLESv2/Texture.h" @@ -14,70 +14,67 @@ #include "libGLESv2/FramebufferAttachment.h" #include "libGLESv2/renderer/Renderer.h" #include "libGLESv2/renderer/RenderTarget.h" -#include "libGLESv2/renderer/RenderbufferImpl.h" #include "common/utilities.h" namespace gl { -Renderbuffer::Renderbuffer(rx::RenderbufferImpl *impl, GLuint id) +unsigned int RenderbufferStorage::mCurrentSerial = 1; + +Renderbuffer::Renderbuffer(GLuint id, RenderbufferStorage *newStorage) : RefCountObject(id), - mRenderbuffer(impl) + mStorage(newStorage) { - ASSERT(mRenderbuffer); - - mWidth = mRenderbuffer->getWidth(); - mHeight = mRenderbuffer->getHeight(); - mInternalFormat = mRenderbuffer->getInternalFormat(); - mActualFormat = mRenderbuffer->getActualFormat(); - mSamples = mRenderbuffer->getSamples(); + ASSERT(mStorage); } Renderbuffer::~Renderbuffer() { - SafeDelete(mRenderbuffer); + SafeDelete(mStorage); } -void Renderbuffer::setStorage(GLsizei width, GLsizei height, GLenum internalformat, GLsizei samples) +void Renderbuffer::setStorage(RenderbufferStorage *newStorage) { - mWidth = width; - mHeight = height; - mInternalFormat = internalformat; - mSamples = samples; + ASSERT(newStorage); - mRenderbuffer->setStorage(width, height, internalformat, samples); - mActualFormat = mRenderbuffer->getActualFormat(); + SafeDelete(mStorage); + mStorage = newStorage; } -rx::RenderbufferImpl *Renderbuffer::getImpl() +RenderbufferStorage *Renderbuffer::getStorage() { - ASSERT(mRenderbuffer); - return mRenderbuffer; + ASSERT(mStorage); + return mStorage; } GLsizei Renderbuffer::getWidth() const { - return mWidth; + ASSERT(mStorage); + return mStorage->getWidth(); } GLsizei Renderbuffer::getHeight() const { - return mHeight; + ASSERT(mStorage); + return mStorage->getHeight(); } GLenum Renderbuffer::getInternalFormat() const { - return mInternalFormat; + ASSERT(mStorage); + return mStorage->getInternalFormat(); } GLenum Renderbuffer::getActualFormat() const { - return mActualFormat; + ASSERT(mStorage); + return mStorage->getActualFormat(); } GLsizei Renderbuffer::getSamples() const { - return mSamples; + ASSERT(mStorage); + return mStorage->getSamples(); } GLuint Renderbuffer::getRedSize() const @@ -110,4 +107,176 @@ GLuint Renderbuffer::getStencilSize() const return GetInternalFormatInfo(getActualFormat()).stencilBits; } +RenderbufferStorage::RenderbufferStorage() : mSerial(issueSerials(1)) +{ + mWidth = 0; + mHeight = 0; + mInternalFormat = GL_RGBA4; + mActualFormat = GL_RGBA8_OES; + mSamples = 0; +} + +RenderbufferStorage::~RenderbufferStorage() +{ +} + +rx::RenderTarget *RenderbufferStorage::getRenderTarget() +{ + return NULL; +} + +GLsizei RenderbufferStorage::getWidth() const +{ + return mWidth; +} + +GLsizei RenderbufferStorage::getHeight() const +{ + return mHeight; +} + +GLenum RenderbufferStorage::getInternalFormat() const +{ + return mInternalFormat; +} + +GLenum RenderbufferStorage::getActualFormat() const +{ + return mActualFormat; +} + +GLsizei RenderbufferStorage::getSamples() const +{ + return mSamples; +} + +unsigned int RenderbufferStorage::getSerial() const +{ + return mSerial; +} + +unsigned int RenderbufferStorage::issueSerials(unsigned int count) +{ + unsigned int firstSerial = mCurrentSerial; + mCurrentSerial += count; + return firstSerial; +} + +bool RenderbufferStorage::isTexture() const +{ + return false; +} + +unsigned int RenderbufferStorage::getTextureSerial() const +{ + return -1; +} + +Colorbuffer::Colorbuffer(rx::Renderer *renderer, rx::SwapChain *swapChain) +{ + mRenderTarget = renderer->createRenderTarget(swapChain, false); + + if (mRenderTarget) + { + mWidth = mRenderTarget->getWidth(); + mHeight = mRenderTarget->getHeight(); + mInternalFormat = mRenderTarget->getInternalFormat(); + mActualFormat = mRenderTarget->getActualFormat(); + mSamples = mRenderTarget->getSamples(); + } +} + +Colorbuffer::Colorbuffer(rx::Renderer *renderer, int width, int height, GLenum format, GLsizei samples) : mRenderTarget(NULL) +{ + mRenderTarget = renderer->createRenderTarget(width, height, format, samples); + + if (mRenderTarget) + { + mWidth = width; + mHeight = height; + mInternalFormat = format; + mActualFormat = mRenderTarget->getActualFormat(); + mSamples = mRenderTarget->getSamples(); + } +} + +Colorbuffer::~Colorbuffer() +{ + if (mRenderTarget) + { + delete mRenderTarget; + } +} + +rx::RenderTarget *Colorbuffer::getRenderTarget() +{ + return mRenderTarget; +} + +DepthStencilbuffer::DepthStencilbuffer(rx::Renderer *renderer, rx::SwapChain *swapChain) +{ + mDepthStencil = renderer->createRenderTarget(swapChain, true); + if (mDepthStencil) + { + mWidth = mDepthStencil->getWidth(); + mHeight = mDepthStencil->getHeight(); + mInternalFormat = mDepthStencil->getInternalFormat(); + mSamples = mDepthStencil->getSamples(); + mActualFormat = mDepthStencil->getActualFormat(); + } +} + +DepthStencilbuffer::DepthStencilbuffer(rx::Renderer *renderer, int width, int height, GLsizei samples) +{ + + mDepthStencil = renderer->createRenderTarget(width, height, GL_DEPTH24_STENCIL8_OES, samples); + + mWidth = mDepthStencil->getWidth(); + mHeight = mDepthStencil->getHeight(); + mInternalFormat = GL_DEPTH24_STENCIL8_OES; + mActualFormat = mDepthStencil->getActualFormat(); + mSamples = mDepthStencil->getSamples(); +} + +DepthStencilbuffer::~DepthStencilbuffer() +{ + if (mDepthStencil) + { + delete mDepthStencil; + } +} + +rx::RenderTarget *DepthStencilbuffer::getRenderTarget() +{ + return mDepthStencil; +} + +Depthbuffer::Depthbuffer(rx::Renderer *renderer, int width, int height, GLsizei samples) : DepthStencilbuffer(renderer, width, height, samples) +{ + if (mDepthStencil) + { + mInternalFormat = GL_DEPTH_COMPONENT16; // If the renderbuffer parameters are queried, the calling function + // will expect one of the valid renderbuffer formats for use in + // glRenderbufferStorage + } +} + +Depthbuffer::~Depthbuffer() +{ +} + +Stencilbuffer::Stencilbuffer(rx::Renderer *renderer, int width, int height, GLsizei samples) : DepthStencilbuffer(renderer, width, height, samples) +{ + if (mDepthStencil) + { + mInternalFormat = GL_STENCIL_INDEX8; // If the renderbuffer parameters are queried, the calling function + // will expect one of the valid renderbuffer formats for use in + // glRenderbufferStorage + } +} + +Stencilbuffer::~Stencilbuffer() +{ +} + } diff --git a/src/libGLESv2/Renderbuffer.h b/src/libGLESv2/Renderbuffer.h index fd1ffa4d..71bcb0e1 100644 --- a/src/libGLESv2/Renderbuffer.h +++ b/src/libGLESv2/Renderbuffer.h @@ -4,9 +4,10 @@ // found in the LICENSE file. // -// Renderbuffer.h: Defines the renderer-agnostic container class gl::Renderbuffer. -// Implements GL renderbuffer objects and related functionality. -// [OpenGL ES 2.0.24] section 4.4.3 page 108. +// Renderbuffer.h: Defines the wrapper class gl::Renderbuffer, as well as the +// class hierarchy used to store its contents: RenderbufferStorage, Colorbuffer, +// DepthStencilbuffer, Depthbuffer and Stencilbuffer. Implements GL renderbuffer +// objects and related functionality. [OpenGL ES 2.0.24] section 4.4.3 page 108. #ifndef LIBGLESV2_RENDERBUFFER_H_ #define LIBGLESV2_RENDERBUFFER_H_ @@ -18,11 +19,15 @@ namespace rx { -class RenderbufferImpl; +class Renderer; +class SwapChain; +class RenderTarget; +class TextureStorage; } namespace gl { +class RenderbufferStorage; class FramebufferAttachment; // A GL renderbuffer object is usually used as a depth or stencil buffer attachment @@ -33,12 +38,11 @@ class FramebufferAttachment; class Renderbuffer : public RefCountObject { public: - Renderbuffer(rx::RenderbufferImpl *impl, GLuint id); + Renderbuffer(GLuint id, RenderbufferStorage *newStorage); virtual ~Renderbuffer(); - void setStorage(GLsizei width, GLsizei height, GLenum internalformat, GLsizei samples); - - rx::RenderbufferImpl *getImpl(); + void setStorage(RenderbufferStorage *newStorage); + RenderbufferStorage *getStorage(); GLsizei getWidth() const; GLsizei getHeight() const; @@ -53,15 +57,102 @@ class Renderbuffer : public RefCountObject GLuint getStencilSize() const; private: - DISALLOW_COPY_AND_ASSIGN(Renderbuffer); + RenderbufferStorage *mStorage; +}; + +// A class derived from RenderbufferStorage is created whenever glRenderbufferStorage +// is called. The specific concrete type depends on whether the internal format is +// colour depth, stencil or packed depth/stencil. +class RenderbufferStorage +{ + public: + RenderbufferStorage(); + + virtual ~RenderbufferStorage() = 0; - rx::RenderbufferImpl *mRenderbuffer; + virtual rx::RenderTarget *getRenderTarget(); + virtual GLsizei getWidth() const; + virtual GLsizei getHeight() const; + virtual GLenum getInternalFormat() const; + virtual GLenum getActualFormat() const; + virtual GLsizei getSamples() const; + + virtual unsigned int getSerial() const; + + virtual bool isTexture() const; + virtual unsigned int getTextureSerial() const; + + static unsigned int issueSerials(unsigned int count); + + protected: GLsizei mWidth; GLsizei mHeight; GLenum mInternalFormat; GLenum mActualFormat; GLsizei mSamples; + + private: + DISALLOW_COPY_AND_ASSIGN(RenderbufferStorage); + + const unsigned int mSerial; + + static unsigned int mCurrentSerial; +}; + +class Colorbuffer : public RenderbufferStorage +{ + public: + Colorbuffer(rx::Renderer *renderer, rx::SwapChain *swapChain); + Colorbuffer(rx::Renderer *renderer, GLsizei width, GLsizei height, GLenum format, GLsizei samples); + + virtual ~Colorbuffer(); + + virtual rx::RenderTarget *getRenderTarget(); + + private: + DISALLOW_COPY_AND_ASSIGN(Colorbuffer); + + rx::RenderTarget *mRenderTarget; +}; + +class DepthStencilbuffer : public RenderbufferStorage +{ + public: + DepthStencilbuffer(rx::Renderer *renderer, rx::SwapChain *swapChain); + DepthStencilbuffer(rx::Renderer *renderer, GLsizei width, GLsizei height, GLsizei samples); + + ~DepthStencilbuffer(); + + virtual rx::RenderTarget *getRenderTarget(); + + protected: + rx::RenderTarget *mDepthStencil; + + private: + DISALLOW_COPY_AND_ASSIGN(DepthStencilbuffer); +}; + +class Depthbuffer : public DepthStencilbuffer +{ + public: + Depthbuffer(rx::Renderer *renderer, GLsizei width, GLsizei height, GLsizei samples); + + virtual ~Depthbuffer(); + + private: + DISALLOW_COPY_AND_ASSIGN(Depthbuffer); +}; + +class Stencilbuffer : public DepthStencilbuffer +{ + public: + Stencilbuffer(rx::Renderer *renderer, GLsizei width, GLsizei height, GLsizei samples); + + virtual ~Stencilbuffer(); + + private: + DISALLOW_COPY_AND_ASSIGN(Stencilbuffer); }; } diff --git a/src/libGLESv2/ResourceManager.cpp b/src/libGLESv2/ResourceManager.cpp index 35f87836..04fa8410 100644 --- a/src/libGLESv2/ResourceManager.cpp +++ b/src/libGLESv2/ResourceManager.cpp @@ -403,7 +403,7 @@ void ResourceManager::checkRenderbufferAllocation(GLuint renderbuffer) { if (renderbuffer != 0 && !getRenderbuffer(renderbuffer)) { - Renderbuffer *renderbufferObject = new Renderbuffer(mRenderer->createRenderbuffer(), renderbuffer); + Renderbuffer *renderbufferObject = new Renderbuffer(renderbuffer, new Colorbuffer(mRenderer, 0, 0, GL_RGBA4, 0)); mRenderbufferMap[renderbuffer] = renderbufferObject; renderbufferObject->addRef(); } diff --git a/src/libGLESv2/libGLESv2.cpp b/src/libGLESv2/libGLESv2.cpp index 4a31f2ce..bc1b5896 100644 --- a/src/libGLESv2/libGLESv2.cpp +++ b/src/libGLESv2/libGLESv2.cpp @@ -3876,8 +3876,7 @@ void GL_APIENTRY glRenderbufferStorageMultisampleANGLE(GLenum target, GLsizei sa return; } - gl::Renderbuffer *renderbuffer = context->getState().getCurrentRenderbuffer(); - renderbuffer->setStorage(width, height, internalformat, samples); + context->setRenderbufferStorage(width, height, internalformat, samples); } } @@ -5822,8 +5821,7 @@ void GL_APIENTRY glRenderbufferStorageMultisample(GLenum target, GLsizei samples return; } - gl::Renderbuffer *renderbuffer = context->getState().getCurrentRenderbuffer(); - renderbuffer->setStorage(width, height, internalformat, samples); + context->setRenderbufferStorage(width, height, internalformat, samples); } } diff --git a/src/libGLESv2/renderer/RenderbufferImpl.cpp b/src/libGLESv2/renderer/RenderbufferImpl.cpp deleted file mode 100644 index 770ae8e9..00000000 --- a/src/libGLESv2/renderer/RenderbufferImpl.cpp +++ /dev/null @@ -1,21 +0,0 @@ -// -// Copyright (c) 2014 The ANGLE Project Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. -// - -// RenderbufferImpl.h: Implements the shared methods of the abstract class gl::RenderbufferImpl - -#include "libGLESv2/renderer/RenderbufferImpl.h" - -namespace rx -{ -RenderbufferImpl::RenderbufferImpl() -{ -} - -RenderbufferImpl::~RenderbufferImpl() -{ -} - -} diff --git a/src/libGLESv2/renderer/RenderbufferImpl.h b/src/libGLESv2/renderer/RenderbufferImpl.h deleted file mode 100644 index 5f24e80c..00000000 --- a/src/libGLESv2/renderer/RenderbufferImpl.h +++ /dev/null @@ -1,39 +0,0 @@ -// -// Copyright (c) 2014 The ANGLE Project Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. -// - -// RenderbufferImpl.h: Defines the abstract class gl::RenderbufferImpl - -#ifndef LIBGLESV2_RENDERER_RENDERBUFFERIMPL_H_ -#define LIBGLESV2_RENDERER_RENDERBUFFERIMPL_H_ - -#include "angle_gl.h" - -#include "common/angleutils.h" - -namespace rx -{ - -class RenderbufferImpl -{ - public: - RenderbufferImpl(); - virtual ~RenderbufferImpl() = 0; - - virtual void setStorage(GLsizei width, GLsizei height, GLenum internalformat, GLsizei samples) = 0; - - virtual GLsizei getWidth() const = 0; - virtual GLsizei getHeight() const = 0; - virtual GLenum getInternalFormat() const = 0; - virtual GLenum getActualFormat() const = 0; - virtual GLsizei getSamples() const = 0; - - private: - DISALLOW_COPY_AND_ASSIGN(RenderbufferImpl); -}; - -} - -#endif // LIBGLESV2_RENDERER_RENDERBUFFERIMPL_H_ diff --git a/src/libGLESv2/renderer/Renderer.h b/src/libGLESv2/renderer/Renderer.h index 90251e24..6ef8d643 100644 --- a/src/libGLESv2/renderer/Renderer.h +++ b/src/libGLESv2/renderer/Renderer.h @@ -66,7 +66,6 @@ class TextureStorage; class UniformStorage; class TextureImpl; class TransformFeedbackImpl; -class RenderbufferImpl; struct ConfigDesc { @@ -219,10 +218,6 @@ class Renderer // Texture creation virtual TextureImpl *createTexture(GLenum target) = 0; - // Renderbuffer creation - virtual RenderbufferImpl *createRenderbuffer() = 0; - virtual RenderbufferImpl *createRenderbuffer(SwapChain *swapChain, bool depth) = 0; - // Buffer creation virtual BufferImpl *createBuffer() = 0; virtual VertexBuffer *createVertexBuffer() = 0; diff --git a/src/libGLESv2/renderer/d3d/RenderbufferD3D.cpp b/src/libGLESv2/renderer/d3d/RenderbufferD3D.cpp deleted file mode 100644 index 897ceed0..00000000 --- a/src/libGLESv2/renderer/d3d/RenderbufferD3D.cpp +++ /dev/null @@ -1,101 +0,0 @@ -// -// Copyright (c) 2014 The ANGLE Project Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. -// - -// RenderbufferD3d.cpp: Implements the RenderbufferD3D class, a specialization of RenderbufferImpl - - -#include "libGLESv2/renderer/d3d/RenderbufferD3D.h" - -#include "libGLESv2/renderer/Renderer.h" -#include "libGLESv2/renderer/RenderTarget.h" - -namespace rx -{ -unsigned int RenderbufferD3D::mCurrentSerial = 1; - -RenderbufferD3D::RenderbufferD3D(Renderer *renderer) : mSerial(issueSerials(1)), mRenderer(renderer) -{ - mRenderTarget = NULL; -} - -RenderbufferD3D::~RenderbufferD3D() -{ - SafeDelete(mRenderTarget); -} - -RenderbufferD3D *RenderbufferD3D::makeRenderbufferD3D(RenderbufferImpl *renderbuffer) -{ - ASSERT(HAS_DYNAMIC_TYPE(RenderbufferD3D*, renderbuffer)); - return static_cast<RenderbufferD3D*>(renderbuffer); -} - -void RenderbufferD3D::setStorage(GLsizei width, GLsizei height, GLenum internalformat, GLsizei samples) -{ - // If the renderbuffer parameters are queried, the calling function - // will expect one of the valid renderbuffer formats for use in - // glRenderbufferStorage, but we should create depth and stencil buffers - // as DEPTH24_STENCIL8 - GLenum creationFormat = internalformat; - if (internalformat == GL_DEPTH_COMPONENT16 || internalformat == GL_STENCIL_INDEX8) - { - creationFormat = GL_DEPTH24_STENCIL8_OES; - } - - RenderTarget *newRT = mRenderer->createRenderTarget(width, height, creationFormat, samples); - SafeDelete(mRenderTarget); - mRenderTarget = newRT; -} - -void RenderbufferD3D::setStorage(SwapChain *swapChain, bool depth) -{ - RenderTarget *newRT = mRenderer->createRenderTarget(swapChain, depth); - SafeDelete(mRenderTarget); - mRenderTarget = newRT; -} - -GLsizei RenderbufferD3D::getWidth() const -{ - return (mRenderTarget ? mRenderTarget->getWidth() : 0); -} - -GLsizei RenderbufferD3D::getHeight() const -{ - return (mRenderTarget ? mRenderTarget->getHeight() : 0); -} - -GLenum RenderbufferD3D::getInternalFormat() const -{ - return (mRenderTarget ? mRenderTarget->getInternalFormat() : GL_RGBA4); -} - -GLenum RenderbufferD3D::getActualFormat() const -{ - return (mRenderTarget ? mRenderTarget->getActualFormat() : GL_RGBA4); -} - -GLsizei RenderbufferD3D::getSamples() const -{ - return (mRenderTarget ? mRenderTarget->getSamples() : 0); -} - -RenderTarget *RenderbufferD3D::getRenderTarget() -{ - return mRenderTarget; -} - -unsigned int RenderbufferD3D::getSerial() const -{ - return mSerial; -} - -unsigned int RenderbufferD3D::issueSerials(unsigned int count) -{ - unsigned int firstSerial = mCurrentSerial; - mCurrentSerial += count; - return firstSerial; -} - -} diff --git a/src/libGLESv2/renderer/d3d/RenderbufferD3D.h b/src/libGLESv2/renderer/d3d/RenderbufferD3D.h deleted file mode 100644 index 42dab4f1..00000000 --- a/src/libGLESv2/renderer/d3d/RenderbufferD3D.h +++ /dev/null @@ -1,55 +0,0 @@ -// -// Copyright (c) 2014 The ANGLE Project Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. -// - -// RenderbufferD3d.h: Defines the RenderbufferD3D class which implements RenderbufferImpl. - -#ifndef LIBGLESV2_RENDERER_RENDERBUFFERD3D_H_ -#define LIBGLESV2_RENDERER_RENDERBUFFERD3D_H_ - -#include "angle_gl.h" - -#include "common/angleutils.h" -#include "libGLESv2/renderer/RenderbufferImpl.h" - -namespace rx -{ -class Renderer; -class RenderTarget; -class SwapChain; - -class RenderbufferD3D : public RenderbufferImpl -{ - public: - RenderbufferD3D(Renderer *renderer); - virtual ~RenderbufferD3D(); - - static RenderbufferD3D *makeRenderbufferD3D(RenderbufferImpl *texture); - - virtual void setStorage(GLsizei width, GLsizei height, GLenum internalformat, GLsizei samples); - virtual void setStorage(SwapChain *swapChain, bool depth); - - virtual GLsizei getWidth() const; - virtual GLsizei getHeight() const; - virtual GLenum getInternalFormat() const; - virtual GLenum getActualFormat() const; - virtual GLsizei getSamples() const; - - virtual rx::RenderTarget *getRenderTarget(); - virtual unsigned int getSerial() const; - static unsigned int issueSerials(unsigned int count); - - private: - DISALLOW_COPY_AND_ASSIGN(RenderbufferD3D); - - Renderer *mRenderer; - RenderTarget *mRenderTarget; - const unsigned int mSerial; - - static unsigned int mCurrentSerial; -}; -} - -#endif // LIBGLESV2_RENDERER_RENDERBUFFERD3D_H_ diff --git a/src/libGLESv2/renderer/d3d/TextureStorage.cpp b/src/libGLESv2/renderer/d3d/TextureStorage.cpp index 09f5bd0f..d2a6d240 100644 --- a/src/libGLESv2/renderer/d3d/TextureStorage.cpp +++ b/src/libGLESv2/renderer/d3d/TextureStorage.cpp @@ -8,7 +8,6 @@ #include "libGLESv2/renderer/d3d/TextureStorage.h" #include "libGLESv2/renderer/d3d/TextureD3D.h" -#include "libGLESv2/renderer/d3d/RenderbufferD3D.h" #include "libGLESv2/renderer/Renderer.h" #include "libGLESv2/Renderbuffer.h" #include "libGLESv2/Texture.h" @@ -26,7 +25,7 @@ TextureStorage::TextureStorage() void TextureStorage::initializeSerials(unsigned int rtSerialsToReserve, unsigned int rtSerialsLayerStride) { - mFirstRenderTargetSerial = RenderbufferD3D::issueSerials(rtSerialsToReserve); + mFirstRenderTargetSerial = gl::RenderbufferStorage::issueSerials(rtSerialsToReserve); mRenderTargetSerialsLayerStride = rtSerialsLayerStride; } diff --git a/src/libGLESv2/renderer/d3d/d3d11/Renderer11.cpp b/src/libGLESv2/renderer/d3d/d3d11/Renderer11.cpp index 3a154329..e5c4d12b 100644 --- a/src/libGLESv2/renderer/d3d/d3d11/Renderer11.cpp +++ b/src/libGLESv2/renderer/d3d/d3d11/Renderer11.cpp @@ -36,7 +36,6 @@ #include "libGLESv2/renderer/d3d/d3d11/PixelTransfer11.h" #include "libGLESv2/renderer/d3d/d3d11/VertexArray11.h" #include "libGLESv2/renderer/d3d/d3d11/Buffer11.h" -#include "libGLESv2/renderer/d3d/RenderbufferD3D.h" #include "libEGL/Display.h" @@ -2708,19 +2707,6 @@ TextureImpl *Renderer11::createTexture(GLenum target) return NULL; } -RenderbufferImpl *Renderer11::createRenderbuffer() -{ - RenderbufferD3D *renderbuffer = new RenderbufferD3D(this); - return renderbuffer; -} - -RenderbufferImpl *Renderer11::createRenderbuffer(SwapChain *swapChain, bool depth) -{ - RenderbufferD3D *renderbuffer = new RenderbufferD3D(this); - renderbuffer->setStorage(swapChain, depth); - return renderbuffer; -} - gl::Error Renderer11::readTextureData(ID3D11Texture2D *texture, unsigned int subResource, const gl::Rectangle &area, GLenum format, GLenum type, GLuint outputPitch, const gl::PixelPackState &pack, uint8_t *pixels) { diff --git a/src/libGLESv2/renderer/d3d/d3d11/Renderer11.h b/src/libGLESv2/renderer/d3d/d3d11/Renderer11.h index 7b59d9c9..6087e8c5 100644 --- a/src/libGLESv2/renderer/d3d/d3d11/Renderer11.h +++ b/src/libGLESv2/renderer/d3d/d3d11/Renderer11.h @@ -162,10 +162,6 @@ class Renderer11 : public Renderer // Texture creation virtual TextureImpl *createTexture(GLenum target); - // Renderbuffer creation - virtual RenderbufferImpl *createRenderbuffer(); - virtual RenderbufferImpl *createRenderbuffer(SwapChain *swapChain, bool depth); - // Buffer creation virtual BufferImpl *createBuffer(); virtual VertexBuffer *createVertexBuffer(); diff --git a/src/libGLESv2/renderer/d3d/d3d9/Renderer9.cpp b/src/libGLESv2/renderer/d3d/d3d9/Renderer9.cpp index a5607d08..7238f3ea 100644 --- a/src/libGLESv2/renderer/d3d/d3d9/Renderer9.cpp +++ b/src/libGLESv2/renderer/d3d/d3d9/Renderer9.cpp @@ -26,7 +26,6 @@ #include "libGLESv2/renderer/d3d/ShaderD3D.h" #include "libGLESv2/renderer/d3d/TextureD3D.h" #include "libGLESv2/renderer/d3d/TransformFeedbackD3D.h" -#include "libGLESv2/renderer/d3d/RenderbufferD3D.h" #include "libGLESv2/main.h" #include "libGLESv2/Buffer.h" #include "libGLESv2/Texture.h" @@ -1166,7 +1165,7 @@ gl::FramebufferAttachment *Renderer9::getNullColorbuffer(gl::FramebufferAttachme } } - gl::Renderbuffer *nullRenderbuffer = new gl::Renderbuffer(createRenderbuffer(), 0); + gl::Renderbuffer *nullRenderbuffer = new gl::Renderbuffer(0, new gl::Colorbuffer(this, width, height, GL_NONE, 0)); gl::RenderbufferAttachment *nullbuffer = new gl::RenderbufferAttachment(GL_NONE, nullRenderbuffer); // add nullbuffer to the cache @@ -3082,19 +3081,6 @@ TextureImpl *Renderer9::createTexture(GLenum target) return NULL; } -RenderbufferImpl *Renderer9::createRenderbuffer() -{ - RenderbufferD3D *renderbuffer = new RenderbufferD3D(this); - return renderbuffer; -} - -RenderbufferImpl *Renderer9::createRenderbuffer(SwapChain *swapChain, bool depth) -{ - RenderbufferD3D *renderbuffer = new RenderbufferD3D(this); - renderbuffer->setStorage(swapChain, depth); - return renderbuffer; -} - bool Renderer9::getLUID(LUID *adapterLuid) const { adapterLuid->HighPart = 0; diff --git a/src/libGLESv2/renderer/d3d/d3d9/Renderer9.h b/src/libGLESv2/renderer/d3d/d3d9/Renderer9.h index 2c4d469f..7cf0b1e4 100644 --- a/src/libGLESv2/renderer/d3d/d3d9/Renderer9.h +++ b/src/libGLESv2/renderer/d3d/d3d9/Renderer9.h @@ -164,10 +164,6 @@ class Renderer9 : public Renderer // Texture creation virtual TextureImpl *createTexture(GLenum target); - // Renderbuffer creation - virtual RenderbufferImpl *createRenderbuffer(); - virtual RenderbufferImpl *createRenderbuffer(SwapChain *swapChain, bool depth); - // Buffer creation virtual BufferImpl *createBuffer(); virtual VertexBuffer *createVertexBuffer(); |