Adds RenderTarget11 type

TRAC #22134 Signed-off-by: Nicolas Capens Signed-off-by: Daniel Koch git-svn-id: https://angleproject.googlecode.com/svn/branches/dx11proto@1481 736b8ea6-26fd-11df-bfd4-992fa37f6226
parent 965bcd2e
...@@ -268,6 +268,8 @@ ...@@ -268,6 +268,8 @@
'libGLESv2/renderer/renderer9_utils.cpp', 'libGLESv2/renderer/renderer9_utils.cpp',
'libGLESv2/renderer/renderer9_utils.h', 'libGLESv2/renderer/renderer9_utils.h',
'libGLESv2/renderer/RenderTarget.h', 'libGLESv2/renderer/RenderTarget.h',
'libGLESv2/renderer/RenderTarget11.h',
'libGLESv2/renderer/RenderTarget11.cpp',
'libGLESv2/renderer/RenderTarget9.h', 'libGLESv2/renderer/RenderTarget9.h',
'libGLESv2/renderer/RenderTarget9.cpp', 'libGLESv2/renderer/RenderTarget9.cpp',
'libGLESv2/renderer/ShaderCache.h', 'libGLESv2/renderer/ShaderCache.h',
......
...@@ -252,6 +252,7 @@ copy "$(OutDir)libGLESv2.lib" "$(ProjectDir)..\..\lib\$(Configuration)\" ...@@ -252,6 +252,7 @@ copy "$(OutDir)libGLESv2.lib" "$(ProjectDir)..\..\lib\$(Configuration)\"
<ClCompile Include="renderer\Renderer9.cpp" /> <ClCompile Include="renderer\Renderer9.cpp" />
<ClCompile Include="renderer\Image.cpp" /> <ClCompile Include="renderer\Image.cpp" />
<ClCompile Include="renderer\renderer9_utils.cpp" /> <ClCompile Include="renderer\renderer9_utils.cpp" />
<ClCompile Include="renderer\RenderTarget11.cpp" />
<ClCompile Include="renderer\RenderTarget9.cpp" /> <ClCompile Include="renderer\RenderTarget9.cpp" />
<ClCompile Include="renderer\RenderStateCache.cpp" /> <ClCompile Include="renderer\RenderStateCache.cpp" />
<ClCompile Include="renderer\SwapChain11.cpp" /> <ClCompile Include="renderer\SwapChain11.cpp" />
...@@ -293,6 +294,7 @@ copy "$(OutDir)libGLESv2.lib" "$(ProjectDir)..\..\lib\$(Configuration)\" ...@@ -293,6 +294,7 @@ copy "$(OutDir)libGLESv2.lib" "$(ProjectDir)..\..\lib\$(Configuration)\"
<ClInclude Include="renderer\Renderer9.h" /> <ClInclude Include="renderer\Renderer9.h" />
<ClInclude Include="renderer\renderer9_utils.h" /> <ClInclude Include="renderer\renderer9_utils.h" />
<ClInclude Include="renderer\RenderTarget.h" /> <ClInclude Include="renderer\RenderTarget.h" />
<ClInclude Include="renderer\RenderTarget11.h" />
<ClInclude Include="renderer\RenderTarget9.h" /> <ClInclude Include="renderer\RenderTarget9.h" />
<ClInclude Include="renderer\RenderStateCache.h" /> <ClInclude Include="renderer\RenderStateCache.h" />
<ClInclude Include="renderer\ShaderCache.h" /> <ClInclude Include="renderer\ShaderCache.h" />
......
...@@ -125,6 +125,9 @@ ...@@ -125,6 +125,9 @@
<ClCompile Include="renderer\SwapChain11.cpp"> <ClCompile Include="renderer\SwapChain11.cpp">
<Filter>Renderer</Filter> <Filter>Renderer</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="renderer\RenderTarget11.cpp">
<Filter>Renderer</Filter>
</ClCompile>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ClInclude Include="BinaryStream.h"> <ClInclude Include="BinaryStream.h">
...@@ -256,6 +259,9 @@ ...@@ -256,6 +259,9 @@
<ClInclude Include="renderer\SwapChain11.h"> <ClInclude Include="renderer\SwapChain11.h">
<Filter>Renderer</Filter> <Filter>Renderer</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="renderer\RenderTarget11.h">
<Filter>Renderer</Filter>
</ClInclude>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<None Include="libGLESv2.def"> <None Include="libGLESv2.def">
...@@ -265,4 +271,4 @@ ...@@ -265,4 +271,4 @@
<ItemGroup> <ItemGroup>
<ResourceCompile Include="libGLESv2.rc" /> <ResourceCompile Include="libGLESv2.rc" />
</ItemGroup> </ItemGroup>
</Project> </Project>
\ No newline at end of file
//
// Copyright (c) 2012 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.
//
// RenderTarget11.cpp: Implements a DX11-specific wrapper for ID3D11View pointers
// retained by Renderbuffers.
#include "libGLESv2/renderer/RenderTarget11.h"
#include "libGLESv2/renderer/Renderer11.h"
#include "libGLESv2/renderer/renderer11_utils.h"
#include "libGLESv2/main.h"
namespace rx
{
RenderTarget11::RenderTarget11(Renderer *renderer, ID3D11RenderTargetView *view, GLsizei width, GLsizei height)
{
mRenderer = Renderer11::makeRenderer11(renderer);
mRenderTarget = view;
mDepthStencil = NULL;
if (mRenderTarget)
{
D3D11_RENDER_TARGET_VIEW_DESC desc;
view->GetDesc(&desc);
mWidth = width;
mHeight = height;
mInternalFormat = d3d11_gl::ConvertRenderbufferFormat(desc.Format);
mActualFormat = d3d11_gl::ConvertRenderbufferFormat(desc.Format);
mSamples = 1; // TEMP?
}
}
RenderTarget11::RenderTarget11(Renderer *renderer, ID3D11DepthStencilView *view, GLsizei width, GLsizei height)
{
mRenderer = Renderer11::makeRenderer11(renderer);
mRenderTarget = NULL;
mDepthStencil = view;
if (mDepthStencil)
{
D3D11_DEPTH_STENCIL_VIEW_DESC desc;
view->GetDesc(&desc);
mWidth = width;
mHeight = height;
mInternalFormat = d3d11_gl::ConvertRenderbufferFormat(desc.Format);
mActualFormat = d3d11_gl::ConvertRenderbufferFormat(desc.Format);
mSamples = 1; // TEMP?
}
}
RenderTarget11::~RenderTarget11()
{
if (mRenderTarget)
{
mRenderTarget->Release();
}
if (mDepthStencil)
{
mDepthStencil->Release();
}
}
RenderTarget11 *RenderTarget11::makeRenderTarget11(RenderTarget *target)
{
ASSERT(dynamic_cast<rx::RenderTarget11*>(target) != NULL);
return static_cast<rx::RenderTarget11*>(target);
}
}
\ No newline at end of file
//
// Copyright (c) 2012 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.
//
// RenderTarget11.h: Defines a DX11-specific wrapper for ID3D11View pointers
// retained by Renderbuffers.
#ifndef LIBGLESV2_RENDERER_RENDERTARGET11_H_
#define LIBGLESV2_RENDERER_RENDERTARGET11_H_
#include <d3d11.h>
#include "libGLESv2/renderer/RenderTarget.h"
namespace rx
{
class Renderer;
class Renderer11;
class RenderTarget11 : public RenderTarget
{
public:
RenderTarget11(Renderer *renderer, ID3D11RenderTargetView *view, GLsizei width, GLsizei height);
RenderTarget11(Renderer *renderer, ID3D11DepthStencilView *view, GLsizei width, GLsizei height);
virtual ~RenderTarget11();
static RenderTarget11 *makeRenderTarget11(RenderTarget *renderTarget);
private:
DISALLOW_COPY_AND_ASSIGN(RenderTarget11);
ID3D11RenderTargetView *mRenderTarget;
ID3D11DepthStencilView *mDepthStencil;
Renderer11 *mRenderer;
};
}
#endif LIBGLESV2_RENDERER_RENDERTARGET11_H_
\ No newline at end of file
...@@ -11,6 +11,7 @@ ...@@ -11,6 +11,7 @@
#include "libGLESv2/utilities.h" #include "libGLESv2/utilities.h"
#include "libGLESv2/mathutil.h" #include "libGLESv2/mathutil.h"
#include "libGLESv2/renderer/Renderer11.h" #include "libGLESv2/renderer/Renderer11.h"
#include "libGLESv2/renderer/RenderTarget11.h"
#include "libGLESv2/renderer/renderer11_utils.h" #include "libGLESv2/renderer/renderer11_utils.h"
#include "libGLESv2/renderer/SwapChain11.h" #include "libGLESv2/renderer/SwapChain11.h"
...@@ -730,9 +731,17 @@ bool Renderer11::copyImage(gl::Framebuffer *framebuffer, const RECT &sourceRect, ...@@ -730,9 +731,17 @@ bool Renderer11::copyImage(gl::Framebuffer *framebuffer, const RECT &sourceRect,
RenderTarget *Renderer11::createRenderTarget(SwapChain *swapChain, bool depth) RenderTarget *Renderer11::createRenderTarget(SwapChain *swapChain, bool depth)
{ {
// TODO SwapChain11 *swapChain11 = SwapChain11::makeSwapChain11(swapChain);
UNIMPLEMENTED(); RenderTarget11 *renderTarget = NULL;
return NULL; if (depth)
{
renderTarget = new RenderTarget11(this, swapChain11->getDepthStencil(), swapChain11->getWidth(), swapChain11->getHeight());
}
else
{
renderTarget = new RenderTarget11(this, swapChain11->getRenderTarget(), swapChain11->getWidth(), swapChain11->getHeight());
}
return renderTarget;
} }
RenderTarget *Renderer11::createRenderTarget(int width, int height, GLenum format, GLsizei samples, bool depth) RenderTarget *Renderer11::createRenderTarget(int width, int height, GLenum format, GLsizei samples, bool depth)
......
...@@ -32,6 +32,9 @@ class SwapChain11 : public SwapChain ...@@ -32,6 +32,9 @@ class SwapChain11 : public SwapChain
virtual ID3D11DepthStencilView *getDepthStencil(); virtual ID3D11DepthStencilView *getDepthStencil();
virtual ID3D11Texture2D *getOffscreenTexture(); virtual ID3D11Texture2D *getOffscreenTexture();
EGLint getWidth() const { return mWidth; }
EGLint getHeight() const { return mHeight; }
static SwapChain11 *makeSwapChain11(SwapChain *swapChain); static SwapChain11 *makeSwapChain11(SwapChain *swapChain);
private: private:
......
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