Commit 9fc51d90 by Shannon Woods

Changes gl::RenderbufferStorage to rx::RenderbufferImpl

BUG=angle:782 Also eliminates Colorbuffer/DepthStencilBuffer and related friends and adds the RenderbufferD3D implementation of RenderbufferImpl. Change-Id: Ibe72c9589b3c238b952744e7cfd70d97ec898eb9 Reviewed-on: https://chromium-review.googlesource.com/222925Reviewed-by: 's avatarGeoff Lang <geofflang@chromium.org> Tested-by: 's avatarShannon Woods <shannonwoods@chromium.org>
parent ede18442
...@@ -289,8 +289,9 @@ ...@@ -289,8 +289,9 @@
<ClInclude Include="..\..\src\libGLESv2\renderer\IndexRangeCache.h"/> <ClInclude Include="..\..\src\libGLESv2\renderer\IndexRangeCache.h"/>
<ClInclude Include="..\..\src\libGLESv2\renderer\ProgramImpl.h"/> <ClInclude Include="..\..\src\libGLESv2\renderer\ProgramImpl.h"/>
<ClInclude Include="..\..\src\libGLESv2\renderer\QueryImpl.h"/> <ClInclude Include="..\..\src\libGLESv2\renderer\QueryImpl.h"/>
<ClInclude Include="..\..\src\libGLESv2\renderer\RenderTarget.h"/> <ClInclude Include="..\..\src\libGLESv2\renderer\RenderbufferImpl.h"/>
<ClInclude Include="..\..\src\libGLESv2\renderer\Renderer.h"/> <ClInclude Include="..\..\src\libGLESv2\renderer\Renderer.h"/>
<ClInclude Include="..\..\src\libGLESv2\renderer\RenderTarget.h"/>
<ClInclude Include="..\..\src\libGLESv2\renderer\ShaderExecutable.h"/> <ClInclude Include="..\..\src\libGLESv2\renderer\ShaderExecutable.h"/>
<ClInclude Include="..\..\src\libGLESv2\renderer\ShaderImpl.h"/> <ClInclude Include="..\..\src\libGLESv2\renderer\ShaderImpl.h"/>
<ClInclude Include="..\..\src\libGLESv2\renderer\SwapChain.h"/> <ClInclude Include="..\..\src\libGLESv2\renderer\SwapChain.h"/>
...@@ -318,6 +319,7 @@ ...@@ -318,6 +319,7 @@
<ClInclude Include="..\..\src\libGLESv2\renderer\d3d\IndexDataManager.h"/> <ClInclude Include="..\..\src\libGLESv2\renderer\d3d\IndexDataManager.h"/>
<ClInclude Include="..\..\src\libGLESv2\renderer\d3d\MemoryBuffer.h"/> <ClInclude Include="..\..\src\libGLESv2\renderer\d3d\MemoryBuffer.h"/>
<ClInclude Include="..\..\src\libGLESv2\renderer\d3d\ProgramD3D.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\ShaderD3D.h"/>
<ClInclude Include="..\..\src\libGLESv2\renderer\d3d\TextureD3D.h"/> <ClInclude Include="..\..\src\libGLESv2\renderer\d3d\TextureD3D.h"/>
<ClInclude Include="..\..\src\libGLESv2\renderer\d3d\TextureStorage.h"/> <ClInclude Include="..\..\src\libGLESv2\renderer\d3d\TextureStorage.h"/>
...@@ -456,6 +458,7 @@ ...@@ -456,6 +458,7 @@
<ClCompile Include="..\..\src\libGLESv2\renderer\Image.cpp"/> <ClCompile Include="..\..\src\libGLESv2\renderer\Image.cpp"/>
<ClCompile Include="..\..\src\libGLESv2\renderer\IndexRangeCache.cpp"/> <ClCompile Include="..\..\src\libGLESv2\renderer\IndexRangeCache.cpp"/>
<ClCompile Include="..\..\src\libGLESv2\renderer\ProgramImpl.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\Renderer.cpp"/>
<ClCompile Include="..\..\src\libGLESv2\renderer\copyimage.cpp"/> <ClCompile Include="..\..\src\libGLESv2\renderer\copyimage.cpp"/>
<ClCompile Include="..\..\src\libGLESv2\renderer\loadimage.cpp"/> <ClCompile Include="..\..\src\libGLESv2\renderer\loadimage.cpp"/>
...@@ -473,6 +476,7 @@ ...@@ -473,6 +476,7 @@
<ClCompile Include="..\..\src\libGLESv2\renderer\d3d\IndexDataManager.cpp"/> <ClCompile Include="..\..\src\libGLESv2\renderer\d3d\IndexDataManager.cpp"/>
<ClCompile Include="..\..\src\libGLESv2\renderer\d3d\MemoryBuffer.cpp"/> <ClCompile Include="..\..\src\libGLESv2\renderer\d3d\MemoryBuffer.cpp"/>
<ClCompile Include="..\..\src\libGLESv2\renderer\d3d\ProgramD3D.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\ShaderD3D.cpp"/>
<ClCompile Include="..\..\src\libGLESv2\renderer\d3d\TextureD3D.cpp"/> <ClCompile Include="..\..\src\libGLESv2\renderer\d3d\TextureD3D.cpp"/>
<ClCompile Include="..\..\src\libGLESv2\renderer\d3d\TextureStorage.cpp"/> <ClCompile Include="..\..\src\libGLESv2\renderer\d3d\TextureStorage.cpp"/>
......
...@@ -814,6 +814,24 @@ ...@@ -814,6 +814,24 @@
<Filter Include="src\libGLESv2"> <Filter Include="src\libGLESv2">
<UniqueIdentifier>{A62A9415-2E9D-A6D2-631D-1F25A5CD626F}</UniqueIdentifier> <UniqueIdentifier>{A62A9415-2E9D-A6D2-631D-1F25A5CD626F}</UniqueIdentifier>
</Filter> </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"> <Filter Include="src">
<UniqueIdentifier>{8CDEE807-BC53-E450-C8B8-4DEBB66742D4}</UniqueIdentifier> <UniqueIdentifier>{8CDEE807-BC53-E450-C8B8-4DEBB66742D4}</UniqueIdentifier>
</Filter> </Filter>
...@@ -1234,6 +1252,30 @@ ...@@ -1234,6 +1252,30 @@
<Filter Include="src\libGLESv2\renderer\d3d"> <Filter Include="src\libGLESv2\renderer\d3d">
<UniqueIdentifier>{3AC19AE3-A12C-4021-D645-4CEA5BC956DB}</UniqueIdentifier> <UniqueIdentifier>{3AC19AE3-A12C-4021-D645-4CEA5BC956DB}</UniqueIdentifier>
</Filter> </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"> <Filter Include="src\libGLESv2\renderer\d3d\d3d9">
<UniqueIdentifier>{8BB193D2-4A8B-A094-A81E-D5E262AB1F92}</UniqueIdentifier> <UniqueIdentifier>{8BB193D2-4A8B-A094-A81E-D5E262AB1F92}</UniqueIdentifier>
</Filter> </Filter>
...@@ -3741,15 +3783,21 @@ ...@@ -3741,15 +3783,21 @@
<ClInclude Include="..\..\src\libGLESv2\renderer\QueryImpl.h"> <ClInclude Include="..\..\src\libGLESv2\renderer\QueryImpl.h">
<Filter>src\libGLESv2\renderer</Filter> <Filter>src\libGLESv2\renderer</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="..\..\src\libGLESv2\renderer\RenderTarget.h"> <ClInclude Include="..\..\src\libGLESv2\renderer\RenderbufferImpl.h">
<Filter>src\libGLESv2\renderer</Filter> <Filter>src\libGLESv2\renderer</Filter>
</ClInclude> </ClInclude>
<ClCompile Include="..\..\src\libGLESv2\renderer\RenderbufferImpl.cpp">
<Filter>src\libGLESv2\renderer</Filter>
</ClCompile>
<ClCompile Include="..\..\src\libGLESv2\renderer\Renderer.cpp"> <ClCompile Include="..\..\src\libGLESv2\renderer\Renderer.cpp">
<Filter>src\libGLESv2\renderer</Filter> <Filter>src\libGLESv2\renderer</Filter>
</ClCompile> </ClCompile>
<ClInclude Include="..\..\src\libGLESv2\renderer\Renderer.h"> <ClInclude Include="..\..\src\libGLESv2\renderer\Renderer.h">
<Filter>src\libGLESv2\renderer</Filter> <Filter>src\libGLESv2\renderer</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="..\..\src\libGLESv2\renderer\RenderTarget.h">
<Filter>src\libGLESv2\renderer</Filter>
</ClInclude>
<ClInclude Include="..\..\src\libGLESv2\renderer\ShaderExecutable.h"> <ClInclude Include="..\..\src\libGLESv2\renderer\ShaderExecutable.h">
<Filter>src\libGLESv2\renderer</Filter> <Filter>src\libGLESv2\renderer</Filter>
</ClInclude> </ClInclude>
...@@ -3891,6 +3939,12 @@ ...@@ -3891,6 +3939,12 @@
<ClInclude Include="..\..\src\libGLESv2\renderer\d3d\ProgramD3D.h"> <ClInclude Include="..\..\src\libGLESv2\renderer\d3d\ProgramD3D.h">
<Filter>src\libGLESv2\renderer\d3d</Filter> <Filter>src\libGLESv2\renderer\d3d</Filter>
</ClInclude> </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"> <ClCompile Include="..\..\src\libGLESv2\renderer\d3d\ShaderD3D.cpp">
<Filter>src\libGLESv2\renderer\d3d</Filter> <Filter>src\libGLESv2\renderer\d3d</Filter>
</ClCompile> </ClCompile>
......
...@@ -402,8 +402,9 @@ ...@@ -402,8 +402,9 @@
<ClInclude Include="..\..\..\..\src\libGLESv2\renderer\IndexRangeCache.h"/> <ClInclude Include="..\..\..\..\src\libGLESv2\renderer\IndexRangeCache.h"/>
<ClInclude Include="..\..\..\..\src\libGLESv2\renderer\ProgramImpl.h"/> <ClInclude Include="..\..\..\..\src\libGLESv2\renderer\ProgramImpl.h"/>
<ClInclude Include="..\..\..\..\src\libGLESv2\renderer\QueryImpl.h"/> <ClInclude Include="..\..\..\..\src\libGLESv2\renderer\QueryImpl.h"/>
<ClInclude Include="..\..\..\..\src\libGLESv2\renderer\RenderTarget.h"/> <ClInclude Include="..\..\..\..\src\libGLESv2\renderer\RenderbufferImpl.h"/>
<ClInclude Include="..\..\..\..\src\libGLESv2\renderer\Renderer.h"/> <ClInclude Include="..\..\..\..\src\libGLESv2\renderer\Renderer.h"/>
<ClInclude Include="..\..\..\..\src\libGLESv2\renderer\RenderTarget.h"/>
<ClInclude Include="..\..\..\..\src\libGLESv2\renderer\ShaderExecutable.h"/> <ClInclude Include="..\..\..\..\src\libGLESv2\renderer\ShaderExecutable.h"/>
<ClInclude Include="..\..\..\..\src\libGLESv2\renderer\ShaderImpl.h"/> <ClInclude Include="..\..\..\..\src\libGLESv2\renderer\ShaderImpl.h"/>
<ClInclude Include="..\..\..\..\src\libGLESv2\renderer\SwapChain.h"/> <ClInclude Include="..\..\..\..\src\libGLESv2\renderer\SwapChain.h"/>
...@@ -431,6 +432,7 @@ ...@@ -431,6 +432,7 @@
<ClInclude Include="..\..\..\..\src\libGLESv2\renderer\d3d\IndexDataManager.h"/> <ClInclude Include="..\..\..\..\src\libGLESv2\renderer\d3d\IndexDataManager.h"/>
<ClInclude Include="..\..\..\..\src\libGLESv2\renderer\d3d\MemoryBuffer.h"/> <ClInclude Include="..\..\..\..\src\libGLESv2\renderer\d3d\MemoryBuffer.h"/>
<ClInclude Include="..\..\..\..\src\libGLESv2\renderer\d3d\ProgramD3D.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\ShaderD3D.h"/>
<ClInclude Include="..\..\..\..\src\libGLESv2\renderer\d3d\TextureD3D.h"/> <ClInclude Include="..\..\..\..\src\libGLESv2\renderer\d3d\TextureD3D.h"/>
<ClInclude Include="..\..\..\..\src\libGLESv2\renderer\d3d\TextureStorage.h"/> <ClInclude Include="..\..\..\..\src\libGLESv2\renderer\d3d\TextureStorage.h"/>
...@@ -550,6 +552,7 @@ ...@@ -550,6 +552,7 @@
<ClCompile Include="..\..\..\..\src\libGLESv2\renderer\Image.cpp"/> <ClCompile Include="..\..\..\..\src\libGLESv2\renderer\Image.cpp"/>
<ClCompile Include="..\..\..\..\src\libGLESv2\renderer\IndexRangeCache.cpp"/> <ClCompile Include="..\..\..\..\src\libGLESv2\renderer\IndexRangeCache.cpp"/>
<ClCompile Include="..\..\..\..\src\libGLESv2\renderer\ProgramImpl.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\Renderer.cpp"/>
<ClCompile Include="..\..\..\..\src\libGLESv2\renderer\copyimage.cpp"/> <ClCompile Include="..\..\..\..\src\libGLESv2\renderer\copyimage.cpp"/>
<ClCompile Include="..\..\..\..\src\libGLESv2\renderer\loadimage.cpp"/> <ClCompile Include="..\..\..\..\src\libGLESv2\renderer\loadimage.cpp"/>
...@@ -567,6 +570,7 @@ ...@@ -567,6 +570,7 @@
<ClCompile Include="..\..\..\..\src\libGLESv2\renderer\d3d\IndexDataManager.cpp"/> <ClCompile Include="..\..\..\..\src\libGLESv2\renderer\d3d\IndexDataManager.cpp"/>
<ClCompile Include="..\..\..\..\src\libGLESv2\renderer\d3d\MemoryBuffer.cpp"/> <ClCompile Include="..\..\..\..\src\libGLESv2\renderer\d3d\MemoryBuffer.cpp"/>
<ClCompile Include="..\..\..\..\src\libGLESv2\renderer\d3d\ProgramD3D.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\ShaderD3D.cpp"/>
<ClCompile Include="..\..\..\..\src\libGLESv2\renderer\d3d\TextureD3D.cpp"/> <ClCompile Include="..\..\..\..\src\libGLESv2\renderer\d3d\TextureD3D.cpp"/>
<ClCompile Include="..\..\..\..\src\libGLESv2\renderer\d3d\TextureStorage.cpp"/> <ClCompile Include="..\..\..\..\src\libGLESv2\renderer\d3d\TextureStorage.cpp"/>
......
...@@ -814,6 +814,24 @@ ...@@ -814,6 +814,24 @@
<Filter Include="src\libGLESv2"> <Filter Include="src\libGLESv2">
<UniqueIdentifier>{A62A9415-2E9D-A6D2-631D-1F25A5CD626F}</UniqueIdentifier> <UniqueIdentifier>{A62A9415-2E9D-A6D2-631D-1F25A5CD626F}</UniqueIdentifier>
</Filter> </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"> <Filter Include="src">
<UniqueIdentifier>{8CDEE807-BC53-E450-C8B8-4DEBB66742D4}</UniqueIdentifier> <UniqueIdentifier>{8CDEE807-BC53-E450-C8B8-4DEBB66742D4}</UniqueIdentifier>
</Filter> </Filter>
...@@ -1234,6 +1252,30 @@ ...@@ -1234,6 +1252,30 @@
<Filter Include="src\libGLESv2\renderer\d3d"> <Filter Include="src\libGLESv2\renderer\d3d">
<UniqueIdentifier>{3AC19AE3-A12C-4021-D645-4CEA5BC956DB}</UniqueIdentifier> <UniqueIdentifier>{3AC19AE3-A12C-4021-D645-4CEA5BC956DB}</UniqueIdentifier>
</Filter> </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"> <Filter Include="src\libGLESv2\renderer\d3d\d3d11">
<UniqueIdentifier>{10FB1414-88D2-B512-6D76-522749905268}</UniqueIdentifier> <UniqueIdentifier>{10FB1414-88D2-B512-6D76-522749905268}</UniqueIdentifier>
</Filter> </Filter>
...@@ -3198,15 +3240,21 @@ ...@@ -3198,15 +3240,21 @@
<ClInclude Include="..\..\..\..\src\libGLESv2\renderer\QueryImpl.h"> <ClInclude Include="..\..\..\..\src\libGLESv2\renderer\QueryImpl.h">
<Filter>src\libGLESv2\renderer</Filter> <Filter>src\libGLESv2\renderer</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="..\..\..\..\src\libGLESv2\renderer\RenderTarget.h"> <ClInclude Include="..\..\..\..\src\libGLESv2\renderer\RenderbufferImpl.h">
<Filter>src\libGLESv2\renderer</Filter> <Filter>src\libGLESv2\renderer</Filter>
</ClInclude> </ClInclude>
<ClCompile Include="..\..\..\..\src\libGLESv2\renderer\RenderbufferImpl.cpp">
<Filter>src\libGLESv2\renderer</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\src\libGLESv2\renderer\Renderer.cpp"> <ClCompile Include="..\..\..\..\src\libGLESv2\renderer\Renderer.cpp">
<Filter>src\libGLESv2\renderer</Filter> <Filter>src\libGLESv2\renderer</Filter>
</ClCompile> </ClCompile>
<ClInclude Include="..\..\..\..\src\libGLESv2\renderer\Renderer.h"> <ClInclude Include="..\..\..\..\src\libGLESv2\renderer\Renderer.h">
<Filter>src\libGLESv2\renderer</Filter> <Filter>src\libGLESv2\renderer</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="..\..\..\..\src\libGLESv2\renderer\RenderTarget.h">
<Filter>src\libGLESv2\renderer</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\src\libGLESv2\renderer\ShaderExecutable.h"> <ClInclude Include="..\..\..\..\src\libGLESv2\renderer\ShaderExecutable.h">
<Filter>src\libGLESv2\renderer</Filter> <Filter>src\libGLESv2\renderer</Filter>
</ClInclude> </ClInclude>
...@@ -3348,6 +3396,12 @@ ...@@ -3348,6 +3396,12 @@
<ClInclude Include="..\..\..\..\src\libGLESv2\renderer\d3d\ProgramD3D.h"> <ClInclude Include="..\..\..\..\src\libGLESv2\renderer\d3d\ProgramD3D.h">
<Filter>src\libGLESv2\renderer\d3d</Filter> <Filter>src\libGLESv2\renderer\d3d</Filter>
</ClInclude> </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"> <ClCompile Include="..\..\..\..\src\libGLESv2\renderer\d3d\ShaderD3D.cpp">
<Filter>src\libGLESv2\renderer\d3d</Filter> <Filter>src\libGLESv2\renderer\d3d</Filter>
</ClCompile> </ClCompile>
......
...@@ -104,9 +104,11 @@ ...@@ -104,9 +104,11 @@
'libGLESv2/renderer/ProgramImpl.cpp', 'libGLESv2/renderer/ProgramImpl.cpp',
'libGLESv2/renderer/ProgramImpl.h', 'libGLESv2/renderer/ProgramImpl.h',
'libGLESv2/renderer/QueryImpl.h', 'libGLESv2/renderer/QueryImpl.h',
'libGLESv2/renderer/RenderTarget.h', 'libGLESv2/renderer/RenderbufferImpl.h',
'libGLESv2/renderer/RenderbufferImpl.cpp',
'libGLESv2/renderer/Renderer.cpp', 'libGLESv2/renderer/Renderer.cpp',
'libGLESv2/renderer/Renderer.h', 'libGLESv2/renderer/Renderer.h',
'libGLESv2/renderer/RenderTarget.h',
'libGLESv2/renderer/ShaderExecutable.h', 'libGLESv2/renderer/ShaderExecutable.h',
'libGLESv2/renderer/ShaderImpl.h', 'libGLESv2/renderer/ShaderImpl.h',
'libGLESv2/renderer/SwapChain.h', 'libGLESv2/renderer/SwapChain.h',
...@@ -169,6 +171,8 @@ ...@@ -169,6 +171,8 @@
'libGLESv2/renderer/d3d/MemoryBuffer.h', 'libGLESv2/renderer/d3d/MemoryBuffer.h',
'libGLESv2/renderer/d3d/ProgramD3D.cpp', 'libGLESv2/renderer/d3d/ProgramD3D.cpp',
'libGLESv2/renderer/d3d/ProgramD3D.h', 'libGLESv2/renderer/d3d/ProgramD3D.h',
'libGLESv2/renderer/d3d/RenderbufferD3D.cpp',
'libGLESv2/renderer/d3d/RenderbufferD3D.h',
'libGLESv2/renderer/d3d/ShaderD3D.cpp', 'libGLESv2/renderer/d3d/ShaderD3D.cpp',
'libGLESv2/renderer/d3d/ShaderD3D.h', 'libGLESv2/renderer/d3d/ShaderD3D.h',
'libGLESv2/renderer/d3d/TextureD3D.cpp', 'libGLESv2/renderer/d3d/TextureD3D.cpp',
......
...@@ -192,8 +192,8 @@ void Context::makeCurrent(egl::Surface *surface) ...@@ -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 // Wrap the existing swapchain resources into GL objects and assign them to the '0' names
rx::SwapChain *swapchain = surface->getSwapChain(); rx::SwapChain *swapchain = surface->getSwapChain();
Colorbuffer *colorbufferZero = new Colorbuffer(mRenderer, swapchain); rx::RenderbufferImpl *colorbufferZero = mRenderer->createRenderbuffer(swapchain, false);
DepthStencilbuffer *depthStencilbufferZero = new DepthStencilbuffer(mRenderer, swapchain); rx::RenderbufferImpl *depthStencilbufferZero = mRenderer->createRenderbuffer(swapchain, true);
Framebuffer *framebufferZero = new DefaultFramebuffer(mRenderer, colorbufferZero, depthStencilbufferZero); Framebuffer *framebufferZero = new DefaultFramebuffer(mRenderer, colorbufferZero, depthStencilbufferZero);
setFramebufferZero(framebufferZero); setFramebufferZero(framebufferZero);
...@@ -728,33 +728,6 @@ void Context::setFramebufferZero(Framebuffer *buffer) ...@@ -728,33 +728,6 @@ void Context::setFramebufferZero(Framebuffer *buffer)
mFramebufferMap[0] = 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 Framebuffer *Context::getFramebuffer(unsigned int handle) const
{ {
FramebufferMap::const_iterator framebuffer = mFramebufferMap.find(handle); FramebufferMap::const_iterator framebuffer = mFramebufferMap.find(handle);
......
...@@ -50,11 +50,6 @@ class Texture3D; ...@@ -50,11 +50,6 @@ class Texture3D;
class Texture2DArray; class Texture2DArray;
class Framebuffer; class Framebuffer;
class Renderbuffer; class Renderbuffer;
class RenderbufferStorage;
class Colorbuffer;
class Depthbuffer;
class Stencilbuffer;
class DepthStencilbuffer;
class FenceNV; class FenceNV;
class FenceSync; class FenceSync;
class Query; class Query;
...@@ -139,8 +134,6 @@ class Context ...@@ -139,8 +134,6 @@ class Context
void setFramebufferZero(Framebuffer *framebuffer); void setFramebufferZero(Framebuffer *framebuffer);
void setRenderbufferStorage(GLsizei width, GLsizei height, GLenum internalformat, GLsizei samples);
void setVertexAttribDivisor(GLuint index, GLuint divisor); void setVertexAttribDivisor(GLuint index, GLuint divisor);
void samplerParameteri(GLuint sampler, GLenum pname, GLint param); void samplerParameteri(GLuint sampler, GLenum pname, GLint param);
......
...@@ -16,13 +16,17 @@ ...@@ -16,13 +16,17 @@
#include "libGLESv2/FramebufferAttachment.h" #include "libGLESv2/FramebufferAttachment.h"
#include "libGLESv2/renderer/Renderer.h" #include "libGLESv2/renderer/Renderer.h"
#include "libGLESv2/renderer/RenderTarget.h" #include "libGLESv2/renderer/RenderTarget.h"
#include "libGLESv2/renderer/RenderbufferImpl.h"
#include "libGLESv2/renderer/Workarounds.h" #include "libGLESv2/renderer/Workarounds.h"
#include "libGLESv2/renderer/d3d/TextureD3D.h" #include "libGLESv2/renderer/d3d/TextureD3D.h"
#include "libGLESv2/renderer/d3d/RenderbufferD3D.h"
#include "common/utilities.h" #include "common/utilities.h"
namespace rx namespace rx
{ {
// TODO: Move these functions, and the D3D-specific header inclusions above,
// to FramebufferD3D.
gl::Error GetAttachmentRenderTarget(gl::FramebufferAttachment *attachment, RenderTarget **outRT) gl::Error GetAttachmentRenderTarget(gl::FramebufferAttachment *attachment, RenderTarget **outRT)
{ {
if (attachment->isTexture()) if (attachment->isTexture())
...@@ -38,9 +42,8 @@ gl::Error GetAttachmentRenderTarget(gl::FramebufferAttachment *attachment, Rende ...@@ -38,9 +42,8 @@ gl::Error GetAttachmentRenderTarget(gl::FramebufferAttachment *attachment, Rende
{ {
gl::Renderbuffer *renderbuffer = attachment->getRenderbuffer(); gl::Renderbuffer *renderbuffer = attachment->getRenderbuffer();
ASSERT(renderbuffer); ASSERT(renderbuffer);
RenderbufferD3D *renderbufferD3D = RenderbufferD3D::makeRenderbufferD3D(renderbuffer->getImpl());
// TODO: cast to RenderbufferD3D *outRT = renderbufferD3D->getRenderTarget();
*outRT = renderbuffer->getStorage()->getRenderTarget();
return gl::Error(GL_NO_ERROR); return gl::Error(GL_NO_ERROR);
} }
} }
...@@ -60,9 +63,8 @@ unsigned int GetAttachmentSerial(gl::FramebufferAttachment *attachment) ...@@ -60,9 +63,8 @@ unsigned int GetAttachmentSerial(gl::FramebufferAttachment *attachment)
gl::Renderbuffer *renderbuffer = attachment->getRenderbuffer(); gl::Renderbuffer *renderbuffer = attachment->getRenderbuffer();
ASSERT(renderbuffer); ASSERT(renderbuffer);
RenderbufferD3D *renderbufferD3D = RenderbufferD3D::makeRenderbufferD3D(renderbuffer->getImpl());
// TODO: cast to RenderbufferD3D return renderbufferD3D->getSerial();
return renderbuffer->getStorage()->getSerial();
} }
} }
...@@ -638,13 +640,13 @@ Error Framebuffer::invalidateSub(GLsizei numAttachments, const GLenum *attachmen ...@@ -638,13 +640,13 @@ Error Framebuffer::invalidateSub(GLsizei numAttachments, const GLenum *attachmen
return Error(GL_NO_ERROR); return Error(GL_NO_ERROR);
} }
DefaultFramebuffer::DefaultFramebuffer(rx::Renderer *renderer, Colorbuffer *colorbuffer, DepthStencilbuffer *depthStencil) DefaultFramebuffer::DefaultFramebuffer(rx::Renderer *renderer, rx::RenderbufferImpl *colorbuffer, rx::RenderbufferImpl *depthStencil)
: Framebuffer(renderer, 0) : Framebuffer(renderer, 0)
{ {
Renderbuffer *colorRenderbuffer = new Renderbuffer(0, colorbuffer); Renderbuffer *colorRenderbuffer = new Renderbuffer(colorbuffer, 0);
mColorbuffers[0] = new RenderbufferAttachment(GL_BACK, colorRenderbuffer); mColorbuffers[0] = new RenderbufferAttachment(GL_BACK, colorRenderbuffer);
Renderbuffer *depthStencilBuffer = new Renderbuffer(0, depthStencil); Renderbuffer *depthStencilBuffer = new Renderbuffer(depthStencil, 0);
// Make a new attachment objects to ensure we do not double-delete // Make a new attachment objects to ensure we do not double-delete
// See angle issue 686 // See angle issue 686
......
...@@ -21,15 +21,12 @@ ...@@ -21,15 +21,12 @@
namespace rx namespace rx
{ {
class Renderer; class Renderer;
class RenderbufferImpl;
} }
namespace gl namespace gl
{ {
class FramebufferAttachment; class FramebufferAttachment;
class Colorbuffer;
class Depthbuffer;
class Stencilbuffer;
class DepthStencilbuffer;
struct Caps; struct Caps;
typedef std::vector<FramebufferAttachment *> ColorbufferInfo; typedef std::vector<FramebufferAttachment *> ColorbufferInfo;
...@@ -103,7 +100,7 @@ class Framebuffer ...@@ -103,7 +100,7 @@ class Framebuffer
class DefaultFramebuffer : public Framebuffer class DefaultFramebuffer : public Framebuffer
{ {
public: public:
DefaultFramebuffer(rx::Renderer *Renderer, Colorbuffer *colorbuffer, DepthStencilbuffer *depthStencil); DefaultFramebuffer(rx::Renderer *Renderer, rx::RenderbufferImpl *colorbuffer, rx::RenderbufferImpl *depthStencil);
virtual GLenum completeness() const; virtual GLenum completeness() const;
virtual FramebufferAttachment *getAttachment(GLenum attachment) const; virtual FramebufferAttachment *getAttachment(GLenum attachment) const;
......
...@@ -187,7 +187,7 @@ GLenum RenderbufferAttachment::getActualFormat() const ...@@ -187,7 +187,7 @@ GLenum RenderbufferAttachment::getActualFormat() const
GLsizei RenderbufferAttachment::getSamples() const GLsizei RenderbufferAttachment::getSamples() const
{ {
return mRenderbuffer->getStorage()->getSamples(); return mRenderbuffer->getSamples();
} }
GLuint RenderbufferAttachment::id() const GLuint RenderbufferAttachment::id() const
......
...@@ -4,9 +4,9 @@ ...@@ -4,9 +4,9 @@
// found in the LICENSE file. // found in the LICENSE file.
// //
// Renderbuffer.cpp: the gl::Renderbuffer class and its derived classes // Renderbuffer.cpp: Implements the renderer-agnostic gl::Renderbuffer class,
// Colorbuffer, Depthbuffer and Stencilbuffer. Implements GL renderbuffer // GL renderbuffer objects and related functionality.
// objects and related functionality. [OpenGL ES 2.0.24] section 4.4.3 page 108. // [OpenGL ES 2.0.24] section 4.4.3 page 108.
#include "libGLESv2/Renderbuffer.h" #include "libGLESv2/Renderbuffer.h"
#include "libGLESv2/Texture.h" #include "libGLESv2/Texture.h"
...@@ -14,67 +14,70 @@ ...@@ -14,67 +14,70 @@
#include "libGLESv2/FramebufferAttachment.h" #include "libGLESv2/FramebufferAttachment.h"
#include "libGLESv2/renderer/Renderer.h" #include "libGLESv2/renderer/Renderer.h"
#include "libGLESv2/renderer/RenderTarget.h" #include "libGLESv2/renderer/RenderTarget.h"
#include "libGLESv2/renderer/RenderbufferImpl.h"
#include "common/utilities.h" #include "common/utilities.h"
namespace gl namespace gl
{ {
unsigned int RenderbufferStorage::mCurrentSerial = 1; Renderbuffer::Renderbuffer(rx::RenderbufferImpl *impl, GLuint id)
Renderbuffer::Renderbuffer(GLuint id, RenderbufferStorage *newStorage)
: RefCountObject(id), : RefCountObject(id),
mStorage(newStorage) mRenderbuffer(impl)
{ {
ASSERT(mStorage); ASSERT(mRenderbuffer);
mWidth = mRenderbuffer->getWidth();
mHeight = mRenderbuffer->getHeight();
mInternalFormat = mRenderbuffer->getInternalFormat();
mActualFormat = mRenderbuffer->getActualFormat();
mSamples = mRenderbuffer->getSamples();
} }
Renderbuffer::~Renderbuffer() Renderbuffer::~Renderbuffer()
{ {
SafeDelete(mStorage); SafeDelete(mRenderbuffer);
} }
void Renderbuffer::setStorage(RenderbufferStorage *newStorage) void Renderbuffer::setStorage(GLsizei width, GLsizei height, GLenum internalformat, GLsizei samples)
{ {
ASSERT(newStorage); mWidth = width;
mHeight = height;
mInternalFormat = internalformat;
mSamples = samples;
SafeDelete(mStorage); mRenderbuffer->setStorage(width, height, internalformat, samples);
mStorage = newStorage; mActualFormat = mRenderbuffer->getActualFormat();
} }
RenderbufferStorage *Renderbuffer::getStorage() rx::RenderbufferImpl *Renderbuffer::getImpl()
{ {
ASSERT(mStorage); ASSERT(mRenderbuffer);
return mStorage; return mRenderbuffer;
} }
GLsizei Renderbuffer::getWidth() const GLsizei Renderbuffer::getWidth() const
{ {
ASSERT(mStorage); return mWidth;
return mStorage->getWidth();
} }
GLsizei Renderbuffer::getHeight() const GLsizei Renderbuffer::getHeight() const
{ {
ASSERT(mStorage); return mHeight;
return mStorage->getHeight();
} }
GLenum Renderbuffer::getInternalFormat() const GLenum Renderbuffer::getInternalFormat() const
{ {
ASSERT(mStorage); return mInternalFormat;
return mStorage->getInternalFormat();
} }
GLenum Renderbuffer::getActualFormat() const GLenum Renderbuffer::getActualFormat() const
{ {
ASSERT(mStorage); return mActualFormat;
return mStorage->getActualFormat();
} }
GLsizei Renderbuffer::getSamples() const GLsizei Renderbuffer::getSamples() const
{ {
ASSERT(mStorage); return mSamples;
return mStorage->getSamples();
} }
GLuint Renderbuffer::getRedSize() const GLuint Renderbuffer::getRedSize() const
...@@ -107,176 +110,4 @@ GLuint Renderbuffer::getStencilSize() const ...@@ -107,176 +110,4 @@ GLuint Renderbuffer::getStencilSize() const
return GetInternalFormatInfo(getActualFormat()).stencilBits; 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()
{
}
} }
...@@ -4,10 +4,9 @@ ...@@ -4,10 +4,9 @@
// found in the LICENSE file. // found in the LICENSE file.
// //
// Renderbuffer.h: Defines the wrapper class gl::Renderbuffer, as well as the // Renderbuffer.h: Defines the renderer-agnostic container class gl::Renderbuffer.
// class hierarchy used to store its contents: RenderbufferStorage, Colorbuffer, // Implements GL renderbuffer objects and related functionality.
// DepthStencilbuffer, Depthbuffer and Stencilbuffer. Implements GL renderbuffer // [OpenGL ES 2.0.24] section 4.4.3 page 108.
// objects and related functionality. [OpenGL ES 2.0.24] section 4.4.3 page 108.
#ifndef LIBGLESV2_RENDERBUFFER_H_ #ifndef LIBGLESV2_RENDERBUFFER_H_
#define LIBGLESV2_RENDERBUFFER_H_ #define LIBGLESV2_RENDERBUFFER_H_
...@@ -19,15 +18,11 @@ ...@@ -19,15 +18,11 @@
namespace rx namespace rx
{ {
class Renderer; class RenderbufferImpl;
class SwapChain;
class RenderTarget;
class TextureStorage;
} }
namespace gl namespace gl
{ {
class RenderbufferStorage;
class FramebufferAttachment; class FramebufferAttachment;
// A GL renderbuffer object is usually used as a depth or stencil buffer attachment // A GL renderbuffer object is usually used as a depth or stencil buffer attachment
...@@ -38,11 +33,12 @@ class FramebufferAttachment; ...@@ -38,11 +33,12 @@ class FramebufferAttachment;
class Renderbuffer : public RefCountObject class Renderbuffer : public RefCountObject
{ {
public: public:
Renderbuffer(GLuint id, RenderbufferStorage *newStorage); Renderbuffer(rx::RenderbufferImpl *impl, GLuint id);
virtual ~Renderbuffer(); virtual ~Renderbuffer();
void setStorage(RenderbufferStorage *newStorage); void setStorage(GLsizei width, GLsizei height, GLenum internalformat, GLsizei samples);
RenderbufferStorage *getStorage();
rx::RenderbufferImpl *getImpl();
GLsizei getWidth() const; GLsizei getWidth() const;
GLsizei getHeight() const; GLsizei getHeight() const;
...@@ -57,102 +53,15 @@ class Renderbuffer : public RefCountObject ...@@ -57,102 +53,15 @@ class Renderbuffer : public RefCountObject
GLuint getStencilSize() const; GLuint getStencilSize() const;
private: private:
RenderbufferStorage *mStorage; DISALLOW_COPY_AND_ASSIGN(Renderbuffer);
};
// 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;
virtual rx::RenderTarget *getRenderTarget(); rx::RenderbufferImpl *mRenderbuffer;
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 mWidth;
GLsizei mHeight; GLsizei mHeight;
GLenum mInternalFormat; GLenum mInternalFormat;
GLenum mActualFormat; GLenum mActualFormat;
GLsizei mSamples; 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);
}; };
} }
......
...@@ -403,7 +403,7 @@ void ResourceManager::checkRenderbufferAllocation(GLuint renderbuffer) ...@@ -403,7 +403,7 @@ void ResourceManager::checkRenderbufferAllocation(GLuint renderbuffer)
{ {
if (renderbuffer != 0 && !getRenderbuffer(renderbuffer)) if (renderbuffer != 0 && !getRenderbuffer(renderbuffer))
{ {
Renderbuffer *renderbufferObject = new Renderbuffer(renderbuffer, new Colorbuffer(mRenderer, 0, 0, GL_RGBA4, 0)); Renderbuffer *renderbufferObject = new Renderbuffer(mRenderer->createRenderbuffer(), renderbuffer);
mRenderbufferMap[renderbuffer] = renderbufferObject; mRenderbufferMap[renderbuffer] = renderbufferObject;
renderbufferObject->addRef(); renderbufferObject->addRef();
} }
......
...@@ -3876,7 +3876,8 @@ void GL_APIENTRY glRenderbufferStorageMultisampleANGLE(GLenum target, GLsizei sa ...@@ -3876,7 +3876,8 @@ void GL_APIENTRY glRenderbufferStorageMultisampleANGLE(GLenum target, GLsizei sa
return; return;
} }
context->setRenderbufferStorage(width, height, internalformat, samples); gl::Renderbuffer *renderbuffer = context->getState().getCurrentRenderbuffer();
renderbuffer->setStorage(width, height, internalformat, samples);
} }
} }
...@@ -5821,7 +5822,8 @@ void GL_APIENTRY glRenderbufferStorageMultisample(GLenum target, GLsizei samples ...@@ -5821,7 +5822,8 @@ void GL_APIENTRY glRenderbufferStorageMultisample(GLenum target, GLsizei samples
return; return;
} }
context->setRenderbufferStorage(width, height, internalformat, samples); gl::Renderbuffer *renderbuffer = context->getState().getCurrentRenderbuffer();
renderbuffer->setStorage(width, height, internalformat, samples);
} }
} }
......
//
// 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()
{
}
}
//
// 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_
...@@ -66,6 +66,7 @@ class TextureStorage; ...@@ -66,6 +66,7 @@ class TextureStorage;
class UniformStorage; class UniformStorage;
class TextureImpl; class TextureImpl;
class TransformFeedbackImpl; class TransformFeedbackImpl;
class RenderbufferImpl;
struct ConfigDesc struct ConfigDesc
{ {
...@@ -218,6 +219,10 @@ class Renderer ...@@ -218,6 +219,10 @@ class Renderer
// Texture creation // Texture creation
virtual TextureImpl *createTexture(GLenum target) = 0; virtual TextureImpl *createTexture(GLenum target) = 0;
// Renderbuffer creation
virtual RenderbufferImpl *createRenderbuffer() = 0;
virtual RenderbufferImpl *createRenderbuffer(SwapChain *swapChain, bool depth) = 0;
// Buffer creation // Buffer creation
virtual BufferImpl *createBuffer() = 0; virtual BufferImpl *createBuffer() = 0;
virtual VertexBuffer *createVertexBuffer() = 0; virtual VertexBuffer *createVertexBuffer() = 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;
}
}
//
// 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_
...@@ -8,6 +8,7 @@ ...@@ -8,6 +8,7 @@
#include "libGLESv2/renderer/d3d/TextureStorage.h" #include "libGLESv2/renderer/d3d/TextureStorage.h"
#include "libGLESv2/renderer/d3d/TextureD3D.h" #include "libGLESv2/renderer/d3d/TextureD3D.h"
#include "libGLESv2/renderer/d3d/RenderbufferD3D.h"
#include "libGLESv2/renderer/Renderer.h" #include "libGLESv2/renderer/Renderer.h"
#include "libGLESv2/Renderbuffer.h" #include "libGLESv2/Renderbuffer.h"
#include "libGLESv2/Texture.h" #include "libGLESv2/Texture.h"
...@@ -25,7 +26,7 @@ TextureStorage::TextureStorage() ...@@ -25,7 +26,7 @@ TextureStorage::TextureStorage()
void TextureStorage::initializeSerials(unsigned int rtSerialsToReserve, unsigned int rtSerialsLayerStride) void TextureStorage::initializeSerials(unsigned int rtSerialsToReserve, unsigned int rtSerialsLayerStride)
{ {
mFirstRenderTargetSerial = gl::RenderbufferStorage::issueSerials(rtSerialsToReserve); mFirstRenderTargetSerial = RenderbufferD3D::issueSerials(rtSerialsToReserve);
mRenderTargetSerialsLayerStride = rtSerialsLayerStride; mRenderTargetSerialsLayerStride = rtSerialsLayerStride;
} }
......
...@@ -36,6 +36,7 @@ ...@@ -36,6 +36,7 @@
#include "libGLESv2/renderer/d3d/d3d11/PixelTransfer11.h" #include "libGLESv2/renderer/d3d/d3d11/PixelTransfer11.h"
#include "libGLESv2/renderer/d3d/d3d11/VertexArray11.h" #include "libGLESv2/renderer/d3d/d3d11/VertexArray11.h"
#include "libGLESv2/renderer/d3d/d3d11/Buffer11.h" #include "libGLESv2/renderer/d3d/d3d11/Buffer11.h"
#include "libGLESv2/renderer/d3d/RenderbufferD3D.h"
#include "libEGL/Display.h" #include "libEGL/Display.h"
...@@ -2707,6 +2708,19 @@ TextureImpl *Renderer11::createTexture(GLenum target) ...@@ -2707,6 +2708,19 @@ TextureImpl *Renderer11::createTexture(GLenum target)
return NULL; 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, 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) GLenum type, GLuint outputPitch, const gl::PixelPackState &pack, uint8_t *pixels)
{ {
......
...@@ -162,6 +162,10 @@ class Renderer11 : public Renderer ...@@ -162,6 +162,10 @@ class Renderer11 : public Renderer
// Texture creation // Texture creation
virtual TextureImpl *createTexture(GLenum target); virtual TextureImpl *createTexture(GLenum target);
// Renderbuffer creation
virtual RenderbufferImpl *createRenderbuffer();
virtual RenderbufferImpl *createRenderbuffer(SwapChain *swapChain, bool depth);
// Buffer creation // Buffer creation
virtual BufferImpl *createBuffer(); virtual BufferImpl *createBuffer();
virtual VertexBuffer *createVertexBuffer(); virtual VertexBuffer *createVertexBuffer();
......
...@@ -26,6 +26,7 @@ ...@@ -26,6 +26,7 @@
#include "libGLESv2/renderer/d3d/ShaderD3D.h" #include "libGLESv2/renderer/d3d/ShaderD3D.h"
#include "libGLESv2/renderer/d3d/TextureD3D.h" #include "libGLESv2/renderer/d3d/TextureD3D.h"
#include "libGLESv2/renderer/d3d/TransformFeedbackD3D.h" #include "libGLESv2/renderer/d3d/TransformFeedbackD3D.h"
#include "libGLESv2/renderer/d3d/RenderbufferD3D.h"
#include "libGLESv2/main.h" #include "libGLESv2/main.h"
#include "libGLESv2/Buffer.h" #include "libGLESv2/Buffer.h"
#include "libGLESv2/Texture.h" #include "libGLESv2/Texture.h"
...@@ -1172,7 +1173,7 @@ gl::FramebufferAttachment *Renderer9::getNullColorbuffer(gl::FramebufferAttachme ...@@ -1172,7 +1173,7 @@ gl::FramebufferAttachment *Renderer9::getNullColorbuffer(gl::FramebufferAttachme
} }
} }
gl::Renderbuffer *nullRenderbuffer = new gl::Renderbuffer(0, new gl::Colorbuffer(this, width, height, GL_NONE, 0)); gl::Renderbuffer *nullRenderbuffer = new gl::Renderbuffer(createRenderbuffer(), 0);
gl::RenderbufferAttachment *nullbuffer = new gl::RenderbufferAttachment(GL_NONE, nullRenderbuffer); gl::RenderbufferAttachment *nullbuffer = new gl::RenderbufferAttachment(GL_NONE, nullRenderbuffer);
// add nullbuffer to the cache // add nullbuffer to the cache
...@@ -3088,6 +3089,19 @@ TextureImpl *Renderer9::createTexture(GLenum target) ...@@ -3088,6 +3089,19 @@ TextureImpl *Renderer9::createTexture(GLenum target)
return NULL; 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 bool Renderer9::getLUID(LUID *adapterLuid) const
{ {
adapterLuid->HighPart = 0; adapterLuid->HighPart = 0;
......
...@@ -164,6 +164,10 @@ class Renderer9 : public Renderer ...@@ -164,6 +164,10 @@ class Renderer9 : public Renderer
// Texture creation // Texture creation
virtual TextureImpl *createTexture(GLenum target); virtual TextureImpl *createTexture(GLenum target);
// Renderbuffer creation
virtual RenderbufferImpl *createRenderbuffer();
virtual RenderbufferImpl *createRenderbuffer(SwapChain *swapChain, bool depth);
// Buffer creation // Buffer creation
virtual BufferImpl *createBuffer(); virtual BufferImpl *createBuffer();
virtual VertexBuffer *createVertexBuffer(); virtual VertexBuffer *createVertexBuffer();
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment