Moves the Blitter into the Renderer's domain

TRAC #22001 Signed-off-by: Daniel Koch Author: Shannon Woods git-svn-id: https://angleproject.googlecode.com/svn/branches/dx11proto@1413 736b8ea6-26fd-11df-bfd4-992fa37f6226
parent 8c7b1a9d
...@@ -222,8 +222,6 @@ ...@@ -222,8 +222,6 @@
'libGLESv2/VertexDataManager.cpp', 'libGLESv2/VertexDataManager.cpp',
'libGLESv2/VertexDataManager.h', 'libGLESv2/VertexDataManager.h',
'libGLESv2/BinaryStream.h', 'libGLESv2/BinaryStream.h',
'libGLESv2/Blit.cpp',
'libGLESv2/Blit.h',
'libGLESv2/Buffer.cpp', 'libGLESv2/Buffer.cpp',
'libGLESv2/Buffer.h', 'libGLESv2/Buffer.h',
'libGLESv2/Context.cpp', 'libGLESv2/Context.cpp',
...@@ -252,6 +250,8 @@ ...@@ -252,6 +250,8 @@
'libGLESv2/Query.cpp', 'libGLESv2/Query.cpp',
'libGLESv2/Renderbuffer.cpp', 'libGLESv2/Renderbuffer.cpp',
'libGLESv2/Renderbuffer.h', 'libGLESv2/Renderbuffer.h',
'libGLESv2/renderer/Blit.cpp',
'libGLESv2/renderer/Blit.h',
'libGLESv2/renderer/Image.cpp', 'libGLESv2/renderer/Image.cpp',
'libGLESv2/renderer/Image.h', 'libGLESv2/renderer/Image.h',
'libGLESv2/renderer/Renderer.cpp', 'libGLESv2/renderer/Renderer.cpp',
......
...@@ -17,7 +17,6 @@ ...@@ -17,7 +17,6 @@
#include "libGLESv2/mathutil.h" #include "libGLESv2/mathutil.h"
#include "libGLESv2/utilities.h" #include "libGLESv2/utilities.h"
#include "libGLESv2/renderer/renderer9_utils.h" // D3D9_REPLACE #include "libGLESv2/renderer/renderer9_utils.h" // D3D9_REPLACE
#include "libGLESv2/Blit.h"
#include "libGLESv2/ResourceManager.h" #include "libGLESv2/ResourceManager.h"
#include "libGLESv2/Buffer.h" #include "libGLESv2/Buffer.h"
#include "libGLESv2/Fence.h" #include "libGLESv2/Fence.h"
...@@ -153,7 +152,6 @@ Context::Context(const gl::Context *shareContext, rx::Renderer *renderer, bool n ...@@ -153,7 +152,6 @@ Context::Context(const gl::Context *shareContext, rx::Renderer *renderer, bool n
mVertexDataManager = NULL; mVertexDataManager = NULL;
mIndexDataManager = NULL; mIndexDataManager = NULL;
mBlit = NULL;
mLineLoopIB = NULL; mLineLoopIB = NULL;
mInvalidEnum = false; mInvalidEnum = false;
...@@ -238,7 +236,6 @@ Context::~Context() ...@@ -238,7 +236,6 @@ Context::~Context()
delete mVertexDataManager; delete mVertexDataManager;
delete mIndexDataManager; delete mIndexDataManager;
delete mBlit;
delete mLineLoopIB; delete mLineLoopIB;
if (mMaskedClearSavedState) if (mMaskedClearSavedState)
...@@ -257,7 +254,6 @@ void Context::makeCurrent(egl::Surface *surface) ...@@ -257,7 +254,6 @@ void Context::makeCurrent(egl::Surface *surface)
{ {
mVertexDataManager = new VertexDataManager(mRenderer); mVertexDataManager = new VertexDataManager(mRenderer);
mIndexDataManager = new IndexDataManager(mRenderer); mIndexDataManager = new IndexDataManager(mRenderer);
mBlit = new Blit(mRenderer);
mSupportsShaderModel3 = mRenderer->getShaderModel3Support(); mSupportsShaderModel3 = mRenderer->getShaderModel3Support();
mMaximumPointSize = mRenderer->getMaxPointSize(); mMaximumPointSize = mRenderer->getMaxPointSize();
......
...@@ -60,7 +60,6 @@ class Stencilbuffer; ...@@ -60,7 +60,6 @@ class Stencilbuffer;
class DepthStencilbuffer; class DepthStencilbuffer;
class VertexDataManager; class VertexDataManager;
class IndexDataManager; class IndexDataManager;
class Blit;
class Fence; class Fence;
class Query; class Query;
...@@ -513,8 +512,6 @@ class Context ...@@ -513,8 +512,6 @@ class Context
GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1,
GLbitfield mask); GLbitfield mask);
Blit *getBlitter() { return mBlit; }
private: private:
DISALLOW_COPY_AND_ASSIGN(Context); DISALLOW_COPY_AND_ASSIGN(Context);
...@@ -574,8 +571,6 @@ class Context ...@@ -574,8 +571,6 @@ class Context
VertexDataManager *mVertexDataManager; VertexDataManager *mVertexDataManager;
IndexDataManager *mIndexDataManager; IndexDataManager *mIndexDataManager;
Blit *mBlit;
StreamingIndexBuffer *mLineLoopIB; StreamingIndexBuffer *mLineLoopIB;
BindingPointer<Texture> mIncompleteTextures[TEXTURE_TYPE_COUNT]; BindingPointer<Texture> mIncompleteTextures[TEXTURE_TYPE_COUNT];
......
...@@ -19,7 +19,7 @@ ...@@ -19,7 +19,7 @@
#include "libGLESv2/main.h" #include "libGLESv2/main.h"
#include "libGLESv2/mathutil.h" #include "libGLESv2/mathutil.h"
#include "libGLESv2/utilities.h" #include "libGLESv2/utilities.h"
#include "libGLESv2/Blit.h" #include "libGLESv2/renderer/Blit.h"
#include "libGLESv2/Framebuffer.h" #include "libGLESv2/Framebuffer.h"
namespace gl namespace gl
...@@ -326,12 +326,6 @@ GLint Texture::creationLevels(GLsizei size) const ...@@ -326,12 +326,6 @@ GLint Texture::creationLevels(GLsizei size) const
return creationLevels(size, size); return creationLevels(size, size);
} }
Blit *Texture::getBlitter()
{
Context *context = getContext();
return context->getBlitter();
}
Texture2D::Texture2D(rx::Renderer *renderer, GLuint id) : Texture(renderer, id) Texture2D::Texture2D(rx::Renderer *renderer, GLuint id) : Texture(renderer, id)
{ {
mTexStorage = NULL; mTexStorage = NULL;
...@@ -542,7 +536,7 @@ void Texture2D::copyImage(GLint level, GLenum format, GLint x, GLint y, GLsizei ...@@ -542,7 +536,7 @@ void Texture2D::copyImage(GLint level, GLenum format, GLint x, GLint y, GLsizei
sourceRect.top = y; sourceRect.top = y;
sourceRect.bottom = y + height; sourceRect.bottom = y + height;
getBlitter()->copy(source, sourceRect, format, 0, 0, mTexStorage, level); mRenderer->copyImage(source, sourceRect, format, 0, 0, mTexStorage, level);
} }
} }
...@@ -577,9 +571,9 @@ void Texture2D::copySubImage(GLenum target, GLint level, GLint xoffset, GLint yo ...@@ -577,9 +571,9 @@ void Texture2D::copySubImage(GLenum target, GLint level, GLint xoffset, GLint yo
sourceRect.top = y; sourceRect.top = y;
sourceRect.bottom = y + height; sourceRect.bottom = y + height;
getBlitter()->copy(source, sourceRect, mRenderer->copyImage(source, sourceRect,
gl::ExtractFormat(mImageArray[0].getInternalFormat()), gl::ExtractFormat(mImageArray[0].getInternalFormat()),
xoffset, yoffset, mTexStorage, level); xoffset, yoffset, mTexStorage, level);
} }
} }
} }
...@@ -1326,7 +1320,7 @@ void TextureCubeMap::copyImage(GLenum target, GLint level, GLenum format, GLint ...@@ -1326,7 +1320,7 @@ void TextureCubeMap::copyImage(GLenum target, GLint level, GLenum format, GLint
sourceRect.top = y; sourceRect.top = y;
sourceRect.bottom = y + height; sourceRect.bottom = y + height;
getBlitter()->copy(source, sourceRect, format, 0, 0, mTexStorage, target, level); mRenderer->copyImage(source, sourceRect, format, 0, 0, mTexStorage, target, level);
} }
} }
...@@ -1365,7 +1359,8 @@ void TextureCubeMap::copySubImage(GLenum target, GLint level, GLint xoffset, GLi ...@@ -1365,7 +1359,8 @@ void TextureCubeMap::copySubImage(GLenum target, GLint level, GLint xoffset, GLi
sourceRect.top = y; sourceRect.top = y;
sourceRect.bottom = y + height; sourceRect.bottom = y + height;
getBlitter()->copy(source, sourceRect, gl::ExtractFormat(mImageArray[0][0].getInternalFormat()), xoffset, yoffset, mTexStorage, target, level); mRenderer->copyImage(source, sourceRect, gl::ExtractFormat(mImageArray[0][0].getInternalFormat()),
xoffset, yoffset, mTexStorage, target, level);
} }
} }
......
...@@ -36,7 +36,6 @@ class Renderer; ...@@ -36,7 +36,6 @@ class Renderer;
namespace gl namespace gl
{ {
class Blit;
class Framebuffer; class Framebuffer;
enum enum
...@@ -123,8 +122,6 @@ class Texture : public RefCountObject ...@@ -123,8 +122,6 @@ class Texture : public RefCountObject
virtual int levelCount() = 0; virtual int levelCount() = 0;
static Blit *getBlitter();
rx::Renderer *mRenderer; rx::Renderer *mRenderer;
SamplerState mSamplerState; SamplerState mSamplerState;
......
...@@ -228,7 +228,6 @@ copy "$(OutDir)libGLESv2.lib" "$(ProjectDir)..\..\lib\$(Configuration)\" ...@@ -228,7 +228,6 @@ copy "$(OutDir)libGLESv2.lib" "$(ProjectDir)..\..\lib\$(Configuration)\"
</PostBuildEvent> </PostBuildEvent>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemGroup> <ItemGroup>
<ClCompile Include="Blit.cpp" />
<ClCompile Include="Buffer.cpp" /> <ClCompile Include="Buffer.cpp" />
<ClCompile Include="Context.cpp" /> <ClCompile Include="Context.cpp" />
<ClCompile Include="..\common\debug.cpp" /> <ClCompile Include="..\common\debug.cpp" />
...@@ -245,6 +244,7 @@ copy "$(OutDir)libGLESv2.lib" "$(ProjectDir)..\..\lib\$(Configuration)\" ...@@ -245,6 +244,7 @@ copy "$(OutDir)libGLESv2.lib" "$(ProjectDir)..\..\lib\$(Configuration)\"
<ClCompile Include="Query.cpp" /> <ClCompile Include="Query.cpp" />
<ClCompile Include="..\common\RefCountObject.cpp" /> <ClCompile Include="..\common\RefCountObject.cpp" />
<ClCompile Include="Renderbuffer.cpp" /> <ClCompile Include="Renderbuffer.cpp" />
<ClCompile Include="renderer\Blit.cpp" />
<ClCompile Include="renderer\Renderer.cpp" /> <ClCompile Include="renderer\Renderer.cpp" />
<ClCompile Include="renderer\Renderer11.cpp" /> <ClCompile Include="renderer\Renderer11.cpp" />
<ClCompile Include="renderer\renderer11_utils.cpp" /> <ClCompile Include="renderer\renderer11_utils.cpp" />
...@@ -262,7 +262,6 @@ copy "$(OutDir)libGLESv2.lib" "$(ProjectDir)..\..\lib\$(Configuration)\" ...@@ -262,7 +262,6 @@ copy "$(OutDir)libGLESv2.lib" "$(ProjectDir)..\..\lib\$(Configuration)\"
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ClInclude Include="BinaryStream.h" /> <ClInclude Include="BinaryStream.h" />
<ClInclude Include="Blit.h" />
<ClInclude Include="Buffer.h" /> <ClInclude Include="Buffer.h" />
<ClInclude Include="Context.h" /> <ClInclude Include="Context.h" />
<ClInclude Include="D3DConstantTable.h" /> <ClInclude Include="D3DConstantTable.h" />
...@@ -281,6 +280,7 @@ copy "$(OutDir)libGLESv2.lib" "$(ProjectDir)..\..\lib\$(Configuration)\" ...@@ -281,6 +280,7 @@ copy "$(OutDir)libGLESv2.lib" "$(ProjectDir)..\..\lib\$(Configuration)\"
<ClInclude Include="Query.h" /> <ClInclude Include="Query.h" />
<ClInclude Include="..\common\RefCountObject.h" /> <ClInclude Include="..\common\RefCountObject.h" />
<ClInclude Include="Renderbuffer.h" /> <ClInclude Include="Renderbuffer.h" />
<ClInclude Include="renderer\Blit.h" />
<ClInclude Include="renderer\Image.h" /> <ClInclude Include="renderer\Image.h" />
<ClInclude Include="renderer\Renderer.h" /> <ClInclude Include="renderer\Renderer.h" />
<ClInclude Include="renderer\Renderer11.h" /> <ClInclude Include="renderer\Renderer11.h" />
......
...@@ -14,9 +14,6 @@ ...@@ -14,9 +14,6 @@
</Filter> </Filter>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ClCompile Include="Blit.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="Buffer.cpp"> <ClCompile Include="Buffer.cpp">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
...@@ -107,14 +104,14 @@ ...@@ -107,14 +104,14 @@
<ClCompile Include="renderer\renderer11_utils.cpp"> <ClCompile Include="renderer\renderer11_utils.cpp">
<Filter>Renderer</Filter> <Filter>Renderer</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="renderer\Blit.cpp">
<Filter>Renderer</Filter>
</ClCompile>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ClInclude Include="BinaryStream.h"> <ClInclude Include="BinaryStream.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="Blit.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="Buffer.h"> <ClInclude Include="Buffer.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
...@@ -220,6 +217,9 @@ ...@@ -220,6 +217,9 @@
<ClInclude Include="renderer\renderer11_utils.h"> <ClInclude Include="renderer\renderer11_utils.h">
<Filter>Renderer</Filter> <Filter>Renderer</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="renderer\Blit.h">
<Filter>Renderer</Filter>
</ClInclude>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<None Include="libGLESv2.def"> <None Include="libGLESv2.def">
...@@ -229,4 +229,4 @@ ...@@ -229,4 +229,4 @@
<ItemGroup> <ItemGroup>
<ResourceCompile Include="libGLESv2.rc" /> <ResourceCompile Include="libGLESv2.rc" />
</ItemGroup> </ItemGroup>
</Project> </Project>
\ No newline at end of file
...@@ -6,13 +6,14 @@ ...@@ -6,13 +6,14 @@
// Blit.cpp: Surface copy utility class. // Blit.cpp: Surface copy utility class.
#include "libGLESv2/Blit.h" #include "libGLESv2/renderer/Blit.h"
#include "common/debug.h" #include "common/debug.h"
#include "libGLESv2/main.h" #include "libGLESv2/main.h"
#include "libGLESv2/utilities.h" #include "libGLESv2/utilities.h"
#include "libGLESv2/renderer/renderer9_utils.h" // D3D9_REPLACE #include "libGLESv2/renderer/renderer9_utils.h" // D3D9_REPLACE
#include "libGLESv2/renderer/TextureStorage.h"
#include "libGLESv2/Framebuffer.h" #include "libGLESv2/Framebuffer.h"
namespace namespace
...@@ -42,7 +43,7 @@ const size_t g_shaderSize[] = ...@@ -42,7 +43,7 @@ const size_t g_shaderSize[] =
}; };
} }
namespace gl namespace rx
{ {
Blit::Blit(rx::Renderer9 *renderer) Blit::Blit(rx::Renderer9 *renderer)
: mRenderer(renderer), mQuadVertexBuffer(NULL), mQuadVertexDeclaration(NULL), mSavedRenderTarget(NULL), mSavedDepthStencil(NULL), mSavedStateBlock(NULL) : mRenderer(renderer), mQuadVertexBuffer(NULL), mQuadVertexDeclaration(NULL), mSavedRenderTarget(NULL), mSavedDepthStencil(NULL), mSavedStateBlock(NULL)
...@@ -211,7 +212,7 @@ bool Blit::boxFilter(IDirect3DSurface9 *source, IDirect3DSurface9 *dest) ...@@ -211,7 +212,7 @@ bool Blit::boxFilter(IDirect3DSurface9 *source, IDirect3DSurface9 *dest)
return true; return true;
} }
bool Blit::copy(Framebuffer *framebuffer, const RECT &sourceRect, GLenum destFormat, GLint xoffset, GLint yoffset, TextureStorage2D *storage, GLint level) bool Blit::copy(gl::Framebuffer *framebuffer, const RECT &sourceRect, GLenum destFormat, GLint xoffset, GLint yoffset, gl::TextureStorage2D *storage, GLint level)
{ {
// D3D9_REPLACE // D3D9_REPLACE
IDirect3DSurface9 *source = framebuffer->getRenderTarget(); IDirect3DSurface9 *source = framebuffer->getRenderTarget();
...@@ -234,7 +235,7 @@ bool Blit::copy(Framebuffer *framebuffer, const RECT &sourceRect, GLenum destFor ...@@ -234,7 +235,7 @@ bool Blit::copy(Framebuffer *framebuffer, const RECT &sourceRect, GLenum destFor
return result; return result;
} }
bool Blit::copy(Framebuffer *framebuffer, const RECT &sourceRect, GLenum destFormat, GLint xoffset, GLint yoffset, TextureStorageCubeMap *storage, GLenum target, GLint level) bool Blit::copy(gl::Framebuffer *framebuffer, const RECT &sourceRect, GLenum destFormat, GLint xoffset, GLint yoffset, gl::TextureStorageCubeMap *storage, GLenum target, GLint level)
{ {
// D3D9_REPLACE // D3D9_REPLACE
IDirect3DSurface9 *source = framebuffer->getRenderTarget(); IDirect3DSurface9 *source = framebuffer->getRenderTarget();
...@@ -474,7 +475,7 @@ void Blit::setCommonBlitState() ...@@ -474,7 +475,7 @@ void Blit::setCommonBlitState()
RECT scissorRect = {0}; // Scissoring is disabled for flipping, but we need this to capture and restore the old rectangle RECT scissorRect = {0}; // Scissoring is disabled for flipping, but we need this to capture and restore the old rectangle
device->SetScissorRect(&scissorRect); device->SetScissorRect(&scissorRect);
for(int i = 0; i < MAX_VERTEX_ATTRIBS; i++) for(int i = 0; i < gl::MAX_VERTEX_ATTRIBS; i++)
{ {
device->SetStreamSourceFreq(i, 1); device->SetStreamSourceFreq(i, 1);
} }
......
...@@ -23,17 +23,20 @@ ...@@ -23,17 +23,20 @@
namespace gl namespace gl
{ {
class Context; class Context;
}
namespace rx
{
class Blit class Blit
{ {
public: public:
explicit Blit(rx::Renderer9 *renderer); explicit Blit(Renderer9 *renderer);
~Blit(); ~Blit();
// Copy from source surface to dest surface. // Copy from source surface to dest surface.
// sourceRect, xoffset, yoffset are in D3D coordinates (0,0 in upper-left) // sourceRect, xoffset, yoffset are in D3D coordinates (0,0 in upper-left)
bool copy(Framebuffer *framebuffer, const RECT &sourceRect, GLenum destFormat, GLint xoffset, GLint yoffset, TextureStorage2D *storage, GLint level); bool copy(gl::Framebuffer *framebuffer, const RECT &sourceRect, GLenum destFormat, GLint xoffset, GLint yoffset, gl::TextureStorage2D *storage, GLint level);
bool copy(Framebuffer *framebuffer, const RECT &sourceRect, GLenum destFormat, GLint xoffset, GLint yoffset, TextureStorageCubeMap *storage, GLenum target, GLint level); bool copy(gl::Framebuffer *framebuffer, const RECT &sourceRect, GLenum destFormat, GLint xoffset, GLint yoffset, gl::TextureStorageCubeMap *storage, GLenum target, GLint level);
// Copy from source surface to dest surface. // Copy from source surface to dest surface.
// sourceRect, xoffset, yoffset are in D3D coordinates (0,0 in upper-left) // sourceRect, xoffset, yoffset are in D3D coordinates (0,0 in upper-left)
...@@ -76,7 +79,7 @@ class Blit ...@@ -76,7 +79,7 @@ class Blit
template <class D3DShaderType> template <class D3DShaderType>
bool setShader(ShaderId source, const char *profile, bool setShader(ShaderId source, const char *profile,
D3DShaderType *(rx::Renderer9::*createShader)(const DWORD *, size_t length), D3DShaderType *(Renderer9::*createShader)(const DWORD *, size_t length),
HRESULT (WINAPI IDirect3DDevice9::*setShader)(D3DShaderType*)); HRESULT (WINAPI IDirect3DDevice9::*setShader)(D3DShaderType*));
bool setVertexShader(ShaderId shader); bool setVertexShader(ShaderId shader);
......
...@@ -46,6 +46,8 @@ class TextureStorageCubeMap; ...@@ -46,6 +46,8 @@ class TextureStorageCubeMap;
namespace rx namespace rx
{ {
class Blit;
struct ConfigDesc struct ConfigDesc
{ {
GLenum renderTargetFormat; GLenum renderTargetFormat;
...@@ -115,6 +117,9 @@ class Renderer ...@@ -115,6 +117,9 @@ class Renderer
virtual bool copyToRenderTarget(gl::TextureStorage2D *dest, gl::TextureStorage2D *source) = 0; virtual bool copyToRenderTarget(gl::TextureStorage2D *dest, gl::TextureStorage2D *source) = 0;
virtual bool copyToRenderTarget(gl::TextureStorageCubeMap *dest, gl::TextureStorageCubeMap *source) = 0; virtual bool copyToRenderTarget(gl::TextureStorageCubeMap *dest, gl::TextureStorageCubeMap *source) = 0;
virtual bool copyImage(gl::Framebuffer *framebuffer, const RECT &sourceRect, GLenum destFormat, GLint xoffset, GLint yoffset, gl::TextureStorage2D *storage, GLint level) = 0;
virtual bool copyImage(gl::Framebuffer *framebuffer, const RECT &sourceRect, GLenum destFormat, GLint xoffset, GLint yoffset, gl::TextureStorageCubeMap *storage, GLenum target, GLint level) = 0;
protected: protected:
egl::Display *mDisplay; egl::Display *mDisplay;
......
...@@ -12,6 +12,7 @@ ...@@ -12,6 +12,7 @@
#include "libGLESv2/renderer/renderer9_utils.h" #include "libGLESv2/renderer/renderer9_utils.h"
#include "libGLESv2/renderer/TextureStorage.h" #include "libGLESv2/renderer/TextureStorage.h"
#include "libGLESv2/renderer/Image.h" #include "libGLESv2/renderer/Image.h"
#include "libGLESv2/renderer/Blit.h"
#include "libEGL/Config.h" #include "libEGL/Config.h"
#include "libEGL/Display.h" #include "libEGL/Display.h"
...@@ -62,6 +63,7 @@ Renderer9::Renderer9(egl::Display *display, HDC hDc, bool softwareDevice) : Rend ...@@ -62,6 +63,7 @@ Renderer9::Renderer9(egl::Display *display, HDC hDc, bool softwareDevice) : Rend
mDevice = NULL; mDevice = NULL;
mDeviceEx = NULL; mDeviceEx = NULL;
mDeviceWindow = NULL; mDeviceWindow = NULL;
mBlit = NULL;
mAdapter = D3DADAPTER_DEFAULT; mAdapter = D3DADAPTER_DEFAULT;
...@@ -79,6 +81,8 @@ Renderer9::Renderer9(egl::Display *display, HDC hDc, bool softwareDevice) : Rend ...@@ -79,6 +81,8 @@ Renderer9::Renderer9(egl::Display *display, HDC hDc, bool softwareDevice) : Rend
Renderer9::~Renderer9() Renderer9::~Renderer9()
{ {
releaseDeviceResources(); releaseDeviceResources();
delete mBlit;
if (mDevice) if (mDevice)
{ {
...@@ -319,6 +323,8 @@ EGLint Renderer9::initialize() ...@@ -319,6 +323,8 @@ EGLint Renderer9::initialize()
initializeDevice(); initializeDevice();
mBlit = new Blit(this);
return EGL_SUCCESS; return EGL_SUCCESS;
} }
...@@ -1123,6 +1129,23 @@ D3DPOOL Renderer9::getBufferPool(DWORD usage) const ...@@ -1123,6 +1129,23 @@ D3DPOOL Renderer9::getBufferPool(DWORD usage) const
return D3DPOOL_DEFAULT; return D3DPOOL_DEFAULT;
} }
bool Renderer9::copyImage(gl::Framebuffer *framebuffer, const RECT &sourceRect, GLenum destFormat, GLint xoffset, GLint yoffset,
gl::TextureStorage2D *storage, GLint level)
{
return mBlit->copy(framebuffer, sourceRect, destFormat, xoffset, yoffset, storage, level);
}
bool Renderer9::copyImage(gl::Framebuffer *framebuffer, const RECT &sourceRect, GLenum destFormat, GLint xoffset, GLint yoffset,
gl::TextureStorageCubeMap *storage, GLenum target, GLint level)
{
return mBlit->copy(framebuffer, sourceRect, destFormat, xoffset, yoffset, storage, target, level);
}
bool Renderer9::boxFilter(IDirect3DSurface9 *source, IDirect3DSurface9 *dest)
{
return mBlit->boxFilter(source, dest);
}
D3DPOOL Renderer9::getTexturePool(DWORD usage) const D3DPOOL Renderer9::getTexturePool(DWORD usage) const
{ {
if (mD3d9Ex != NULL) if (mD3d9Ex != NULL)
......
...@@ -114,6 +114,11 @@ class Renderer9 : public Renderer ...@@ -114,6 +114,11 @@ class Renderer9 : public Renderer
virtual bool copyToRenderTarget(gl::TextureStorage2D *dest, gl::TextureStorage2D *source); virtual bool copyToRenderTarget(gl::TextureStorage2D *dest, gl::TextureStorage2D *source);
virtual bool copyToRenderTarget(gl::TextureStorageCubeMap *dest, gl::TextureStorageCubeMap *source); virtual bool copyToRenderTarget(gl::TextureStorageCubeMap *dest, gl::TextureStorageCubeMap *source);
virtual bool copyImage(gl::Framebuffer *framebuffer, const RECT &sourceRect, GLenum destFormat, GLint xoffset, GLint yoffset, gl::TextureStorage2D *storage, GLint level);
virtual bool copyImage(gl::Framebuffer *framebuffer, const RECT &sourceRect, GLenum destFormat, GLint xoffset, GLint yoffset, gl::TextureStorageCubeMap *storage, GLenum target, GLint level);
bool boxFilter(IDirect3DSurface9 *source, IDirect3DSurface9 *dest);
D3DPOOL getTexturePool(DWORD usage) const; D3DPOOL getTexturePool(DWORD usage) const;
private: private:
...@@ -139,6 +144,8 @@ class Renderer9 : public Renderer ...@@ -139,6 +144,8 @@ class Renderer9 : public Renderer
IDirect3DDevice9 *mDevice; IDirect3DDevice9 *mDevice;
IDirect3DDevice9Ex *mDeviceEx; // Might be null if D3D9Ex is not supported. IDirect3DDevice9Ex *mDeviceEx; // Might be null if D3D9Ex is not supported.
Blit *mBlit;
HWND mDeviceWindow; HWND mDeviceWindow;
bool mDeviceLost; bool mDeviceLost;
......
...@@ -11,7 +11,7 @@ ...@@ -11,7 +11,7 @@
#include "libGLESv2/main.h" #include "libGLESv2/main.h"
#include "libGLESv2/renderer/TextureStorage.h" #include "libGLESv2/renderer/TextureStorage.h"
#include "libGLESv2/renderer/SwapChain.h" #include "libGLESv2/renderer/SwapChain.h"
#include "libGLESv2/Blit.h" #include "libGLESv2/renderer/Blit.h"
#include "libGLESv2/renderer/renderer9_utils.h" #include "libGLESv2/renderer/renderer9_utils.h"
...@@ -75,12 +75,6 @@ bool TextureStorage::IsTextureFormatRenderable(D3DFORMAT format) ...@@ -75,12 +75,6 @@ bool TextureStorage::IsTextureFormatRenderable(D3DFORMAT format)
return false; return false;
} }
Blit *TextureStorage::getBlitter()
{
Context *context = getContext();
return context->getBlitter();
}
bool TextureStorage::isRenderTarget() const bool TextureStorage::isRenderTarget() const
{ {
return (mD3DUsage & (D3DUSAGE_RENDERTARGET | D3DUSAGE_DEPTHSTENCIL)) != 0; return (mD3DUsage & (D3DUSAGE_RENDERTARGET | D3DUSAGE_DEPTHSTENCIL)) != 0;
...@@ -185,7 +179,7 @@ void TextureStorage2D::generateMipmap(int level) ...@@ -185,7 +179,7 @@ void TextureStorage2D::generateMipmap(int level)
if (upper != NULL && lower != NULL) if (upper != NULL && lower != NULL)
{ {
getBlitter()->boxFilter(upper, lower); mRenderer->boxFilter(upper, lower);
} }
if (upper != NULL) upper->Release(); if (upper != NULL) upper->Release();
...@@ -262,7 +256,7 @@ void TextureStorageCubeMap::generateMipmap(int face, int level) ...@@ -262,7 +256,7 @@ void TextureStorageCubeMap::generateMipmap(int face, int level)
if (upper != NULL && lower != NULL) if (upper != NULL && lower != NULL)
{ {
getBlitter()->boxFilter(upper, lower); mRenderer->boxFilter(upper, lower);
} }
if (upper != NULL) upper->Release(); if (upper != NULL) upper->Release();
......
...@@ -21,12 +21,11 @@ namespace rx ...@@ -21,12 +21,11 @@ namespace rx
{ {
class Renderer9; class Renderer9;
class SwapChain; class SwapChain;
class Blit;
} }
namespace gl namespace gl
{ {
class Blit;
class TextureStorage class TextureStorage
{ {
public: public:
...@@ -36,7 +35,6 @@ class TextureStorage ...@@ -36,7 +35,6 @@ class TextureStorage
static DWORD GetTextureUsage(D3DFORMAT d3dfmt, GLenum glusage, bool forceRenderable); static DWORD GetTextureUsage(D3DFORMAT d3dfmt, GLenum glusage, bool forceRenderable);
static bool IsTextureFormatRenderable(D3DFORMAT format); static bool IsTextureFormatRenderable(D3DFORMAT format);
static Blit *getBlitter();
bool isRenderTarget() const; bool isRenderTarget() const;
bool isManaged() const; bool isManaged() const;
...@@ -50,6 +48,7 @@ class TextureStorage ...@@ -50,6 +48,7 @@ class TextureStorage
protected: protected:
int mLodOffset; int mLodOffset;
rx::Renderer9 *mRenderer;
private: private:
DISALLOW_COPY_AND_ASSIGN(TextureStorage); DISALLOW_COPY_AND_ASSIGN(TextureStorage);
...@@ -57,8 +56,6 @@ class TextureStorage ...@@ -57,8 +56,6 @@ class TextureStorage
const DWORD mD3DUsage; const DWORD mD3DUsage;
const D3DPOOL mD3DPool; const D3DPOOL mD3DPool;
rx::Renderer9 *mRenderer;
const unsigned int mTextureSerial; const unsigned int mTextureSerial;
static unsigned int issueTextureSerial(); static unsigned int issueTextureSerial();
......
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