aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShannon Woods <shannonwoods@chromium.org>2014-10-30 18:53:29 +0000
committerShannon Woods <shannonwoods@chromium.org>2014-10-31 01:52:58 +0000
commitf108df24949d3118e45b4e90933449a5ca5a50c1 (patch)
treefa15559e66ff2367747f6706356b971637554aa8
parent2111670b73681b2a4330eb790da9ea0aa1b2b427 (diff)
downloadangle-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>
-rw-r--r--projects/src/libANGLE.vcxproj6
-rw-r--r--projects/src/libANGLE.vcxproj.filters56
-rw-r--r--projects/winrt/windows/src/libANGLE.vcxproj6
-rw-r--r--projects/winrt/windows/src/libANGLE.vcxproj.filters56
-rw-r--r--src/libGLESv2.gypi6
-rw-r--r--src/libGLESv2/Context.cpp31
-rw-r--r--src/libGLESv2/Context.h7
-rw-r--r--src/libGLESv2/Framebuffer.cpp20
-rw-r--r--src/libGLESv2/Framebuffer.h7
-rw-r--r--src/libGLESv2/FramebufferAttachment.cpp2
-rw-r--r--src/libGLESv2/Renderbuffer.cpp227
-rw-r--r--src/libGLESv2/Renderbuffer.h111
-rw-r--r--src/libGLESv2/ResourceManager.cpp2
-rw-r--r--src/libGLESv2/libGLESv2.cpp6
-rw-r--r--src/libGLESv2/renderer/RenderbufferImpl.cpp21
-rw-r--r--src/libGLESv2/renderer/RenderbufferImpl.h39
-rw-r--r--src/libGLESv2/renderer/Renderer.h5
-rw-r--r--src/libGLESv2/renderer/d3d/RenderbufferD3D.cpp101
-rw-r--r--src/libGLESv2/renderer/d3d/RenderbufferD3D.h55
-rw-r--r--src/libGLESv2/renderer/d3d/TextureStorage.cpp3
-rw-r--r--src/libGLESv2/renderer/d3d/d3d11/Renderer11.cpp14
-rw-r--r--src/libGLESv2/renderer/d3d/d3d11/Renderer11.h4
-rw-r--r--src/libGLESv2/renderer/d3d/d3d9/Renderer9.cpp16
-rw-r--r--src/libGLESv2/renderer/d3d/d3d9/Renderer9.h4
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();