Split Renderer into version independent interface and Renderer9 implementation.

TRAC #21963 Signed-off-by: Daniel Koch Author: Nicolas Capens git-svn-id: https://angleproject.googlecode.com/svn/branches/dx11proto@1358 736b8ea6-26fd-11df-bfd4-992fa37f6226
parent 7cb796e7
...@@ -21,7 +21,7 @@ ...@@ -21,7 +21,7 @@
#include <vector> #include <vector>
#include "libGLESv2/Context.h" #include "libGLESv2/Context.h"
#include "libGLESv2/renderer/Renderer.h" #include "libGLESv2/renderer/Renderer9.h"
#include "libEGL/Config.h" #include "libEGL/Config.h"
#include "libEGL/Surface.h" #include "libEGL/Surface.h"
...@@ -54,7 +54,7 @@ class Display ...@@ -54,7 +54,7 @@ class Display
bool isValidSurface(egl::Surface *surface); bool isValidSurface(egl::Surface *surface);
bool hasExistingWindowSurface(HWND window); bool hasExistingWindowSurface(HWND window);
renderer::Renderer *getRenderer() { return mRenderer; }; renderer::Renderer9 *getRenderer() { return mRenderer; };
virtual void notifyDeviceLost(); virtual void notifyDeviceLost();
...@@ -80,7 +80,7 @@ class Display ...@@ -80,7 +80,7 @@ class Display
typedef std::set<gl::Context*> ContextSet; typedef std::set<gl::Context*> ContextSet;
ContextSet mContextSet; ContextSet mContextSet;
renderer::Renderer *mRenderer; renderer::Renderer9 *mRenderer; // D3D9_REPLACE
void initExtensionString(); void initExtensionString();
std::string mExtensionString; std::string mExtensionString;
......
...@@ -22,7 +22,7 @@ class Texture2D; ...@@ -22,7 +22,7 @@ class Texture2D;
} }
namespace renderer namespace renderer
{ {
class Renderer; class Renderer9;
class SwapChain; class SwapChain;
} }
...@@ -68,7 +68,7 @@ private: ...@@ -68,7 +68,7 @@ private:
DISALLOW_COPY_AND_ASSIGN(Surface); DISALLOW_COPY_AND_ASSIGN(Surface);
Display *const mDisplay; Display *const mDisplay;
renderer::Renderer *mRenderer; renderer::Renderer9 *mRenderer; // D3D9_REPLACE
HANDLE mShareHandle; HANDLE mShareHandle;
renderer::SwapChain *mSwapChain; renderer::SwapChain *mSwapChain;
......
...@@ -42,7 +42,7 @@ const size_t g_shaderSize[] = ...@@ -42,7 +42,7 @@ const size_t g_shaderSize[] =
namespace gl namespace gl
{ {
Blit::Blit(renderer::Renderer *renderer) Blit::Blit(renderer::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)
{ {
initGeometry(); initGeometry();
...@@ -114,7 +114,7 @@ void Blit::initGeometry() ...@@ -114,7 +114,7 @@ void Blit::initGeometry()
template <class D3DShaderType> template <class D3DShaderType>
bool Blit::setShader(ShaderId source, const char *profile, bool Blit::setShader(ShaderId source, const char *profile,
D3DShaderType *(renderer::Renderer::*createShader)(const DWORD *, size_t length), D3DShaderType *(renderer::Renderer9::*createShader)(const DWORD *, size_t length),
HRESULT (WINAPI IDirect3DDevice9::*setShader)(D3DShaderType*)) HRESULT (WINAPI IDirect3DDevice9::*setShader)(D3DShaderType*))
{ {
IDirect3DDevice9 *device = mRenderer->getDevice(); // D3D9_REPLACE IDirect3DDevice9 *device = mRenderer->getDevice(); // D3D9_REPLACE
...@@ -153,12 +153,12 @@ bool Blit::setShader(ShaderId source, const char *profile, ...@@ -153,12 +153,12 @@ bool Blit::setShader(ShaderId source, const char *profile,
bool Blit::setVertexShader(ShaderId shader) bool Blit::setVertexShader(ShaderId shader)
{ {
return setShader<IDirect3DVertexShader9>(shader, "vs_2_0", &renderer::Renderer::createVertexShader, &IDirect3DDevice9::SetVertexShader); return setShader<IDirect3DVertexShader9>(shader, "vs_2_0", &renderer::Renderer9::createVertexShader, &IDirect3DDevice9::SetVertexShader);
} }
bool Blit::setPixelShader(ShaderId shader) bool Blit::setPixelShader(ShaderId shader)
{ {
return setShader<IDirect3DPixelShader9>(shader, "ps_2_0", &renderer::Renderer::createPixelShader, &IDirect3DDevice9::SetPixelShader); return setShader<IDirect3DPixelShader9>(shader, "ps_2_0", &renderer::Renderer9::createPixelShader, &IDirect3DDevice9::SetPixelShader);
} }
RECT Blit::getSurfaceRect(IDirect3DSurface9 *surface) const RECT Blit::getSurfaceRect(IDirect3DSurface9 *surface) const
......
...@@ -27,7 +27,7 @@ class Context; ...@@ -27,7 +27,7 @@ class Context;
class Blit class Blit
{ {
public: public:
explicit Blit(renderer::Renderer *renderer); explicit Blit(renderer::Renderer9 *renderer);
~Blit(); ~Blit();
// Copy from source surface to dest surface. // Copy from source surface to dest surface.
...@@ -44,7 +44,7 @@ class Blit ...@@ -44,7 +44,7 @@ class Blit
bool boxFilter(IDirect3DSurface9 *source, IDirect3DSurface9 *dest); bool boxFilter(IDirect3DSurface9 *source, IDirect3DSurface9 *dest);
private: private:
renderer::Renderer *mRenderer; renderer::Renderer9 *mRenderer;
IDirect3DVertexBuffer9 *mQuadVertexBuffer; IDirect3DVertexBuffer9 *mQuadVertexBuffer;
IDirect3DVertexDeclaration9 *mQuadVertexDeclaration; IDirect3DVertexDeclaration9 *mQuadVertexDeclaration;
...@@ -74,7 +74,7 @@ class Blit ...@@ -74,7 +74,7 @@ class Blit
template <class D3DShaderType> template <class D3DShaderType>
bool setShader(ShaderId source, const char *profile, bool setShader(ShaderId source, const char *profile,
D3DShaderType *(renderer::Renderer::*createShader)(const DWORD *, size_t length), D3DShaderType *(renderer::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);
......
...@@ -19,7 +19,7 @@ ...@@ -19,7 +19,7 @@
#include "common/angleutils.h" #include "common/angleutils.h"
#include "common/RefCountObject.h" #include "common/RefCountObject.h"
#include "libGLESv2/renderer/Renderer.h" #include "libGLESv2/renderer/Renderer9.h"
namespace gl namespace gl
{ {
...@@ -48,7 +48,7 @@ class Buffer : public RefCountObject ...@@ -48,7 +48,7 @@ class Buffer : public RefCountObject
private: private:
DISALLOW_COPY_AND_ASSIGN(Buffer); DISALLOW_COPY_AND_ASSIGN(Buffer);
renderer::Renderer *mRenderer; renderer::Renderer9 *mRenderer; // D3D9_REPLACE
GLubyte *mContents; GLubyte *mContents;
GLsizeiptr mSize; GLsizeiptr mSize;
GLenum mUsage; GLenum mUsage;
......
...@@ -4405,9 +4405,9 @@ gl::Context *glGetCurrentContext() ...@@ -4405,9 +4405,9 @@ gl::Context *glGetCurrentContext()
return gl::getContext(); return gl::getContext();
} }
renderer::Renderer *glCreateRenderer(egl::Display *display, HMODULE hModule, HDC hDc) renderer::Renderer9 *glCreateRenderer(egl::Display *display, HMODULE hModule, HDC hDc)
{ {
return new renderer::Renderer(display, hModule, hDc); return new renderer::Renderer9(display, hModule, hDc); // D3D9_REPLACE
} }
void glDestroyRenderer(renderer::Renderer *renderer) void glDestroyRenderer(renderer::Renderer *renderer)
...@@ -4415,7 +4415,7 @@ void glDestroyRenderer(renderer::Renderer *renderer) ...@@ -4415,7 +4415,7 @@ void glDestroyRenderer(renderer::Renderer *renderer)
delete renderer; delete renderer;
} }
renderer::SwapChain *glCreateSwapChain(renderer::Renderer *renderer, HWND window, HANDLE shareHandle, renderer::SwapChain *glCreateSwapChain(renderer::Renderer9 *renderer, HWND window, HANDLE shareHandle,
GLenum backBufferFormat, GLenum depthBufferFormat) GLenum backBufferFormat, GLenum depthBufferFormat)
{ {
return new renderer::SwapChain(renderer, window, shareHandle, backBufferFormat, depthBufferFormat); return new renderer::SwapChain(renderer, window, shareHandle, backBufferFormat, depthBufferFormat);
......
...@@ -543,7 +543,7 @@ class Context ...@@ -543,7 +543,7 @@ class Context
egl::Display *mDisplay; egl::Display *mDisplay;
IDirect3DDevice9 *mDevice; IDirect3DDevice9 *mDevice;
renderer::Renderer *mRenderer; renderer::Renderer9 *mRenderer; // D3D9_REPLACE
State mState; State mState;
...@@ -669,10 +669,10 @@ gl::Context *glCreateContext(const gl::Context *shareContext, bool notifyResets, ...@@ -669,10 +669,10 @@ gl::Context *glCreateContext(const gl::Context *shareContext, bool notifyResets,
void glDestroyContext(gl::Context *context); void glDestroyContext(gl::Context *context);
void glMakeCurrent(gl::Context *context, egl::Display *display, egl::Surface *surface); void glMakeCurrent(gl::Context *context, egl::Display *display, egl::Surface *surface);
gl::Context *glGetCurrentContext(); gl::Context *glGetCurrentContext();
renderer::Renderer *glCreateRenderer(egl::Display *display, HMODULE hModule, HDC hDc); renderer::Renderer9 *glCreateRenderer(egl::Display *display, HMODULE hModule, HDC hDc); // D3D9_REPLACE
void glDestroyRenderer(renderer::Renderer *renderer); void glDestroyRenderer(renderer::Renderer *renderer);
renderer::SwapChain *glCreateSwapChain(renderer::Renderer *renderer, HWND window, HANDLE shareHandle, renderer::SwapChain *glCreateSwapChain(renderer::Renderer9 *renderer, HWND window, HANDLE shareHandle,
GLenum backBufferFormat, GLenum depthBufferFormat); GLenum backBufferFormat, GLenum depthBufferFormat); // D3D9_REPLACE
void glDestroySwapChain(renderer::SwapChain *swapChain); void glDestroySwapChain(renderer::SwapChain *swapChain);
__eglMustCastToProperFunctionPointerType __stdcall glGetProcAddress(const char *procname); __eglMustCastToProperFunctionPointerType __stdcall glGetProcAddress(const char *procname);
......
...@@ -13,7 +13,7 @@ ...@@ -13,7 +13,7 @@
namespace gl namespace gl
{ {
Fence::Fence(renderer::Renderer *renderer) Fence::Fence(renderer::Renderer9 *renderer)
{ {
mRenderer = renderer; mRenderer = renderer;
mQuery = NULL; mQuery = NULL;
......
...@@ -14,7 +14,7 @@ ...@@ -14,7 +14,7 @@
#include <d3d9.h> #include <d3d9.h>
#include "common/angleutils.h" #include "common/angleutils.h"
#include "libGLESv2/renderer/Renderer.h" #include "libGLESv2/renderer/Renderer9.h"
namespace gl namespace gl
{ {
...@@ -22,7 +22,7 @@ namespace gl ...@@ -22,7 +22,7 @@ namespace gl
class Fence class Fence
{ {
public: public:
explicit Fence(renderer::Renderer *renderer); explicit Fence(renderer::Renderer9 *renderer);
virtual ~Fence(); virtual ~Fence();
GLboolean isFence(); GLboolean isFence();
...@@ -34,7 +34,7 @@ class Fence ...@@ -34,7 +34,7 @@ class Fence
private: private:
DISALLOW_COPY_AND_ASSIGN(Fence); DISALLOW_COPY_AND_ASSIGN(Fence);
renderer::Renderer *mRenderer; renderer::Renderer9 *mRenderer; // D3D9_REPLACE
IDirect3DQuery9* mQuery; // D3D9_REPLACE IDirect3DQuery9* mQuery; // D3D9_REPLACE
GLenum mCondition; GLenum mCondition;
GLboolean mStatus; GLboolean mStatus;
......
...@@ -19,7 +19,7 @@ namespace gl ...@@ -19,7 +19,7 @@ namespace gl
{ {
unsigned int IndexBuffer::mCurrentSerial = 1; unsigned int IndexBuffer::mCurrentSerial = 1;
IndexDataManager::IndexDataManager(Context *context, renderer::Renderer *renderer) : mRenderer(renderer) IndexDataManager::IndexDataManager(Context *context, renderer::Renderer9 *renderer) : mRenderer(renderer)
{ {
mStreamingBufferShort = new StreamingIndexBuffer(mRenderer, INITIAL_INDEX_BUFFER_SIZE, D3DFMT_INDEX16); mStreamingBufferShort = new StreamingIndexBuffer(mRenderer, INITIAL_INDEX_BUFFER_SIZE, D3DFMT_INDEX16);
...@@ -281,7 +281,7 @@ StaticIndexBuffer *IndexDataManager::getCountingIndices(GLsizei count) ...@@ -281,7 +281,7 @@ StaticIndexBuffer *IndexDataManager::getCountingIndices(GLsizei count)
return mCountingBuffer; return mCountingBuffer;
} }
IndexBuffer::IndexBuffer(renderer::Renderer *renderer, UINT size, D3DFORMAT format) : mRenderer(renderer), mBufferSize(size), mIndexBuffer(NULL) IndexBuffer::IndexBuffer(renderer::Renderer9 *renderer, UINT size, D3DFORMAT format) : mRenderer(renderer), mBufferSize(size), mIndexBuffer(NULL)
{ {
if (size > 0) if (size > 0)
{ {
...@@ -328,7 +328,7 @@ void IndexBuffer::unmap() ...@@ -328,7 +328,7 @@ void IndexBuffer::unmap()
} }
} }
StreamingIndexBuffer::StreamingIndexBuffer(renderer::Renderer *renderer, UINT initialSize, D3DFORMAT format) : IndexBuffer(renderer, initialSize, format) StreamingIndexBuffer::StreamingIndexBuffer(renderer::Renderer9 *renderer, UINT initialSize, D3DFORMAT format) : IndexBuffer(renderer, initialSize, format)
{ {
mWritePosition = 0; mWritePosition = 0;
} }
...@@ -392,7 +392,7 @@ void StreamingIndexBuffer::reserveSpace(UINT requiredSpace, GLenum type) ...@@ -392,7 +392,7 @@ void StreamingIndexBuffer::reserveSpace(UINT requiredSpace, GLenum type)
} }
} }
StaticIndexBuffer::StaticIndexBuffer(renderer::Renderer *renderer) : IndexBuffer(renderer, 0, D3DFMT_UNKNOWN) StaticIndexBuffer::StaticIndexBuffer(renderer::Renderer9 *renderer) : IndexBuffer(renderer, 0, D3DFMT_UNKNOWN)
{ {
mCacheType = GL_NONE; mCacheType = GL_NONE;
} }
......
...@@ -39,7 +39,7 @@ struct TranslatedIndexData ...@@ -39,7 +39,7 @@ struct TranslatedIndexData
class IndexBuffer class IndexBuffer
{ {
public: public:
IndexBuffer(renderer::Renderer *renderer, UINT size, D3DFORMAT format); IndexBuffer(renderer::Renderer9 *renderer, UINT size, D3DFORMAT format);
virtual ~IndexBuffer(); virtual ~IndexBuffer();
UINT size() const { return mBufferSize; } UINT size() const { return mBufferSize; }
...@@ -51,7 +51,7 @@ class IndexBuffer ...@@ -51,7 +51,7 @@ class IndexBuffer
unsigned int getSerial() const; unsigned int getSerial() const;
protected: protected:
renderer::Renderer *const mRenderer; renderer::Renderer9 *const mRenderer; // D3D9_REPLACE
IDirect3DIndexBuffer9 *mIndexBuffer; IDirect3DIndexBuffer9 *mIndexBuffer;
UINT mBufferSize; UINT mBufferSize;
...@@ -67,7 +67,7 @@ class IndexBuffer ...@@ -67,7 +67,7 @@ class IndexBuffer
class StreamingIndexBuffer : public IndexBuffer class StreamingIndexBuffer : public IndexBuffer
{ {
public: public:
StreamingIndexBuffer(renderer::Renderer *renderer, UINT initialSize, D3DFORMAT format); StreamingIndexBuffer(renderer::Renderer9 *renderer, UINT initialSize, D3DFORMAT format);
~StreamingIndexBuffer(); ~StreamingIndexBuffer();
virtual void *map(UINT requiredSpace, UINT *offset); virtual void *map(UINT requiredSpace, UINT *offset);
...@@ -80,7 +80,7 @@ class StreamingIndexBuffer : public IndexBuffer ...@@ -80,7 +80,7 @@ class StreamingIndexBuffer : public IndexBuffer
class StaticIndexBuffer : public IndexBuffer class StaticIndexBuffer : public IndexBuffer
{ {
public: public:
explicit StaticIndexBuffer(renderer::Renderer *renderer); explicit StaticIndexBuffer(renderer::Renderer9 *renderer);
~StaticIndexBuffer(); ~StaticIndexBuffer();
virtual void *map(UINT requiredSpace, UINT *offset); virtual void *map(UINT requiredSpace, UINT *offset);
...@@ -125,7 +125,7 @@ class StaticIndexBuffer : public IndexBuffer ...@@ -125,7 +125,7 @@ class StaticIndexBuffer : public IndexBuffer
class IndexDataManager class IndexDataManager
{ {
public: public:
IndexDataManager(Context *context, renderer::Renderer *renderer); IndexDataManager(Context *context, renderer::Renderer9 *renderer);
virtual ~IndexDataManager(); virtual ~IndexDataManager();
GLenum prepareIndexData(GLenum type, GLsizei count, Buffer *arrayElementBuffer, const GLvoid *indices, TranslatedIndexData *translated); GLenum prepareIndexData(GLenum type, GLsizei count, Buffer *arrayElementBuffer, const GLvoid *indices, TranslatedIndexData *translated);
...@@ -137,7 +137,7 @@ class IndexDataManager ...@@ -137,7 +137,7 @@ class IndexDataManager
std::size_t typeSize(GLenum type) const; std::size_t typeSize(GLenum type) const;
std::size_t indexSize(D3DFORMAT format) const; std::size_t indexSize(D3DFORMAT format) const;
renderer::Renderer *const mRenderer; renderer::Renderer9 *const mRenderer; // D3D9_REPLACE
StreamingIndexBuffer *mStreamingBufferShort; StreamingIndexBuffer *mStreamingBufferShort;
StreamingIndexBuffer *mStreamingBufferInt; StreamingIndexBuffer *mStreamingBufferInt;
......
...@@ -184,7 +184,7 @@ class ProgramBinary : public RefCountObject ...@@ -184,7 +184,7 @@ class ProgramBinary : public RefCountObject
void applyUniformniv(Uniform *targetUniform, GLsizei count, const Vector4 *vector); void applyUniformniv(Uniform *targetUniform, GLsizei count, const Vector4 *vector);
void applyUniformnbv(Uniform *targetUniform, GLsizei count, int width, const GLboolean *v); void applyUniformnbv(Uniform *targetUniform, GLsizei count, int width, const GLboolean *v);
renderer::Renderer *mRenderer; renderer::Renderer9 *mRenderer; // D3D9_REPLACE
IDirect3DDevice9 *mDevice; // D3D9_REPLACE IDirect3DDevice9 *mDevice; // D3D9_REPLACE
IDirect3DPixelShader9 *mPixelExecutable; // D3D9_REPLACE IDirect3DPixelShader9 *mPixelExecutable; // D3D9_REPLACE
......
...@@ -13,7 +13,7 @@ ...@@ -13,7 +13,7 @@
namespace gl namespace gl
{ {
Query::Query(renderer::Renderer *renderer, GLuint id, GLenum type) : RefCountObject(id) Query::Query(renderer::Renderer9 *renderer, GLuint id, GLenum type) : RefCountObject(id)
{ {
mRenderer = renderer; mRenderer = renderer;
mQuery = NULL; mQuery = NULL;
......
...@@ -15,7 +15,7 @@ ...@@ -15,7 +15,7 @@
#include "common/angleutils.h" #include "common/angleutils.h"
#include "common/RefCountObject.h" #include "common/RefCountObject.h"
#include "libGLESv2/renderer/Renderer.h" #include "libGLESv2/renderer/Renderer9.h"
namespace gl namespace gl
{ {
...@@ -23,7 +23,7 @@ namespace gl ...@@ -23,7 +23,7 @@ namespace gl
class Query : public RefCountObject class Query : public RefCountObject
{ {
public: public:
Query(renderer::Renderer *renderer, GLuint id, GLenum type); Query(renderer::Renderer9 *renderer, GLuint id, GLenum type);
virtual ~Query(); virtual ~Query();
void begin(); void begin();
...@@ -36,7 +36,7 @@ class Query : public RefCountObject ...@@ -36,7 +36,7 @@ class Query : public RefCountObject
private: private:
DISALLOW_COPY_AND_ASSIGN(Query); DISALLOW_COPY_AND_ASSIGN(Query);
renderer::Renderer *mRenderer; renderer::Renderer9 *mRenderer; // D3D9_REPLACE
GLboolean testQuery(); GLboolean testQuery();
......
...@@ -397,7 +397,7 @@ Colorbuffer::Colorbuffer(renderer::SwapChain *swapChain) ...@@ -397,7 +397,7 @@ Colorbuffer::Colorbuffer(renderer::SwapChain *swapChain)
Colorbuffer::Colorbuffer(int width, int height, GLenum format, GLsizei samples) : mRenderTarget(NULL) Colorbuffer::Colorbuffer(int width, int height, GLenum format, GLsizei samples) : mRenderTarget(NULL)
{ {
renderer::Renderer *renderer = getDisplay()->getRenderer(); renderer::Renderer9 *renderer = getDisplay()->getRenderer();
IDirect3DDevice9 *device = renderer->getDevice(); // D3D9_REPLACE IDirect3DDevice9 *device = renderer->getDevice(); // D3D9_REPLACE
D3DFORMAT requestedFormat = es2dx::ConvertRenderbufferFormat(format); D3DFORMAT requestedFormat = es2dx::ConvertRenderbufferFormat(format);
...@@ -470,7 +470,7 @@ DepthStencilbuffer::DepthStencilbuffer(renderer::SwapChain *swapChain) ...@@ -470,7 +470,7 @@ DepthStencilbuffer::DepthStencilbuffer(renderer::SwapChain *swapChain)
DepthStencilbuffer::DepthStencilbuffer(int width, int height, GLsizei samples) DepthStencilbuffer::DepthStencilbuffer(int width, int height, GLsizei samples)
{ {
renderer::Renderer *renderer = getDisplay()->getRenderer(); renderer::Renderer9 *renderer = getDisplay()->getRenderer();
IDirect3DDevice9 *device = renderer->getDevice(); // D3D9_REPLACE IDirect3DDevice9 *device = renderer->getDevice(); // D3D9_REPLACE
mDepthStencil = NULL; mDepthStencil = NULL;
......
...@@ -1630,7 +1630,7 @@ bool Texture::copyToRenderTarget(IDirect3DSurface9 *dest, IDirect3DSurface9 *sou ...@@ -1630,7 +1630,7 @@ bool Texture::copyToRenderTarget(IDirect3DSurface9 *dest, IDirect3DSurface9 *sou
if (source && dest) if (source && dest)
{ {
HRESULT result = D3DERR_OUTOFVIDEOMEMORY; HRESULT result = D3DERR_OUTOFVIDEOMEMORY;
renderer::Renderer *renderer = getDisplay()->getRenderer(); renderer::Renderer9 *renderer = getDisplay()->getRenderer();
IDirect3DDevice9 *device = renderer->getDevice(); // D3D9_REPLACE IDirect3DDevice9 *device = renderer->getDevice(); // D3D9_REPLACE
if (fromManaged) if (fromManaged)
......
...@@ -11,6 +11,7 @@ ...@@ -11,6 +11,7 @@
#include "common/debug.h" #include "common/debug.h"
#include "libGLESv2/renderer/Renderer9.h"
#include "libGLESv2/Buffer.h" #include "libGLESv2/Buffer.h"
#include "libGLESv2/Program.h" #include "libGLESv2/Program.h"
#include "libGLESv2/ProgramBinary.h" #include "libGLESv2/ProgramBinary.h"
...@@ -36,7 +37,7 @@ int elementsInBuffer(const VertexAttribute &attribute, int size) ...@@ -36,7 +37,7 @@ int elementsInBuffer(const VertexAttribute &attribute, int size)
return (size - attribute.mOffset % stride + (stride - attribute.typeSize())) / stride; return (size - attribute.mOffset % stride + (stride - attribute.typeSize())) / stride;
} }
VertexDataManager::VertexDataManager(Context *context, renderer::Renderer *renderer) : mContext(context), mRenderer(renderer) VertexDataManager::VertexDataManager(Context *context, renderer::Renderer9 *renderer) : mContext(context), mRenderer(renderer)
{ {
for (int i = 0; i < MAX_VERTEX_ATTRIBS; i++) for (int i = 0; i < MAX_VERTEX_ATTRIBS; i++)
{ {
...@@ -571,7 +572,7 @@ unsigned int VertexDataManager::typeIndex(GLenum type) const ...@@ -571,7 +572,7 @@ unsigned int VertexDataManager::typeIndex(GLenum type) const
} }
} }
VertexBuffer::VertexBuffer(renderer::Renderer *renderer, std::size_t size, DWORD usageFlags) : mRenderer(renderer), mVertexBuffer(NULL) VertexBuffer::VertexBuffer(renderer::Renderer9 *renderer, std::size_t size, DWORD usageFlags) : mRenderer(renderer), mVertexBuffer(NULL)
{ {
if (size > 0) if (size > 0)
{ {
...@@ -618,7 +619,7 @@ unsigned int VertexBuffer::issueSerial() ...@@ -618,7 +619,7 @@ unsigned int VertexBuffer::issueSerial()
return mCurrentSerial++; return mCurrentSerial++;
} }
ArrayVertexBuffer::ArrayVertexBuffer(renderer::Renderer *renderer, std::size_t size, DWORD usageFlags) : VertexBuffer(renderer, size, usageFlags) ArrayVertexBuffer::ArrayVertexBuffer(renderer::Renderer9 *renderer, std::size_t size, DWORD usageFlags) : VertexBuffer(renderer, size, usageFlags)
{ {
mBufferSize = size; mBufferSize = size;
mWritePosition = 0; mWritePosition = 0;
...@@ -634,7 +635,7 @@ void ArrayVertexBuffer::addRequiredSpace(UINT requiredSpace) ...@@ -634,7 +635,7 @@ void ArrayVertexBuffer::addRequiredSpace(UINT requiredSpace)
mRequiredSpace += requiredSpace; mRequiredSpace += requiredSpace;
} }
StreamingVertexBuffer::StreamingVertexBuffer(renderer::Renderer *renderer, std::size_t initialSize) : ArrayVertexBuffer(renderer, initialSize, D3DUSAGE_DYNAMIC | D3DUSAGE_WRITEONLY) StreamingVertexBuffer::StreamingVertexBuffer(renderer::Renderer9 *renderer, std::size_t initialSize) : ArrayVertexBuffer(renderer, initialSize, D3DUSAGE_DYNAMIC | D3DUSAGE_WRITEONLY)
{ {
} }
...@@ -702,7 +703,7 @@ void StreamingVertexBuffer::reserveRequiredSpace() ...@@ -702,7 +703,7 @@ void StreamingVertexBuffer::reserveRequiredSpace()
mRequiredSpace = 0; mRequiredSpace = 0;
} }
StaticVertexBuffer::StaticVertexBuffer(renderer::Renderer *renderer) : ArrayVertexBuffer(renderer, 0, D3DUSAGE_WRITEONLY) StaticVertexBuffer::StaticVertexBuffer(renderer::Renderer9 *renderer) : ArrayVertexBuffer(renderer, 0, D3DUSAGE_WRITEONLY)
{ {
} }
......
...@@ -37,7 +37,7 @@ struct TranslatedAttribute ...@@ -37,7 +37,7 @@ struct TranslatedAttribute
class VertexBuffer class VertexBuffer
{ {
public: public:
VertexBuffer(renderer::Renderer *renderer, std::size_t size, DWORD usageFlags); VertexBuffer(renderer::Renderer9 *renderer, std::size_t size, DWORD usageFlags);
virtual ~VertexBuffer(); virtual ~VertexBuffer();
void unmap(); void unmap();
...@@ -46,7 +46,7 @@ class VertexBuffer ...@@ -46,7 +46,7 @@ class VertexBuffer
unsigned int getSerial() const; unsigned int getSerial() const;
protected: protected:
renderer::Renderer *const mRenderer; renderer::Renderer9 *const mRenderer; // D3D9_REPLACE
IDirect3DVertexBuffer9 *mVertexBuffer; IDirect3DVertexBuffer9 *mVertexBuffer;
unsigned int mSerial; unsigned int mSerial;
...@@ -60,7 +60,7 @@ class VertexBuffer ...@@ -60,7 +60,7 @@ class VertexBuffer
class ArrayVertexBuffer : public VertexBuffer class ArrayVertexBuffer : public VertexBuffer
{ {
public: public:
ArrayVertexBuffer(renderer::Renderer *renderer, std::size_t size, DWORD usageFlags); ArrayVertexBuffer(renderer::Renderer9 *renderer, std::size_t size, DWORD usageFlags);
~ArrayVertexBuffer(); ~ArrayVertexBuffer();
std::size_t size() const { return mBufferSize; } std::size_t size() const { return mBufferSize; }
...@@ -77,7 +77,7 @@ class ArrayVertexBuffer : public VertexBuffer ...@@ -77,7 +77,7 @@ class ArrayVertexBuffer : public VertexBuffer
class StreamingVertexBuffer : public ArrayVertexBuffer class StreamingVertexBuffer : public ArrayVertexBuffer
{ {
public: public:
StreamingVertexBuffer(renderer::Renderer *renderer, std::size_t initialSize); StreamingVertexBuffer(renderer::Renderer9 *renderer, std::size_t initialSize);
~StreamingVertexBuffer(); ~StreamingVertexBuffer();
void *map(const VertexAttribute &attribute, std::size_t requiredSpace, std::size_t *streamOffset); void *map(const VertexAttribute &attribute, std::size_t requiredSpace, std::size_t *streamOffset);
...@@ -87,7 +87,7 @@ class StreamingVertexBuffer : public ArrayVertexBuffer ...@@ -87,7 +87,7 @@ class StreamingVertexBuffer : public ArrayVertexBuffer
class StaticVertexBuffer : public ArrayVertexBuffer class StaticVertexBuffer : public ArrayVertexBuffer
{ {
public: public:
explicit StaticVertexBuffer(renderer::Renderer *renderer); explicit StaticVertexBuffer(renderer::Renderer9 *renderer);
~StaticVertexBuffer(); ~StaticVertexBuffer();
void *map(const VertexAttribute &attribute, std::size_t requiredSpace, std::size_t *streamOffset); void *map(const VertexAttribute &attribute, std::size_t requiredSpace, std::size_t *streamOffset);
...@@ -113,7 +113,7 @@ class StaticVertexBuffer : public ArrayVertexBuffer ...@@ -113,7 +113,7 @@ class StaticVertexBuffer : public ArrayVertexBuffer
class VertexDataManager class VertexDataManager
{ {
public: public:
VertexDataManager(Context *context, renderer::Renderer *renderer); VertexDataManager(Context *context, renderer::Renderer9 *renderer);
virtual ~VertexDataManager(); virtual ~VertexDataManager();
void dirtyCurrentValue(int index) { mDirtyCurrentValue[index] = true; } void dirtyCurrentValue(int index) { mDirtyCurrentValue[index] = true; }
...@@ -127,7 +127,7 @@ class VertexDataManager ...@@ -127,7 +127,7 @@ class VertexDataManager
std::size_t writeAttributeData(ArrayVertexBuffer *vertexBuffer, GLint start, GLsizei count, const VertexAttribute &attribute, GLsizei instances); std::size_t writeAttributeData(ArrayVertexBuffer *vertexBuffer, GLint start, GLsizei count, const VertexAttribute &attribute, GLsizei instances);
Context *const mContext; Context *const mContext;
renderer::Renderer *const mRenderer; renderer::Renderer9 *const mRenderer; // D3D9_REPLACE
StreamingVertexBuffer *mStreamingBuffer; StreamingVertexBuffer *mStreamingBuffer;
......
...@@ -245,7 +245,7 @@ copy "$(OutDir)libGLESv2.lib" "$(ProjectDir)..\..\lib\$(Configuration)\" ...@@ -245,7 +245,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\Renderer.cpp" /> <ClCompile Include="renderer\Renderer9.cpp" />
<ClCompile Include="renderer\SwapChain.cpp" /> <ClCompile Include="renderer\SwapChain.cpp" />
<ClCompile Include="ResourceManager.cpp" /> <ClCompile Include="ResourceManager.cpp" />
<ClCompile Include="Shader.cpp" /> <ClCompile Include="Shader.cpp" />
...@@ -276,6 +276,7 @@ copy "$(OutDir)libGLESv2.lib" "$(ProjectDir)..\..\lib\$(Configuration)\" ...@@ -276,6 +276,7 @@ copy "$(OutDir)libGLESv2.lib" "$(ProjectDir)..\..\lib\$(Configuration)\"
<ClInclude Include="..\common\RefCountObject.h" /> <ClInclude Include="..\common\RefCountObject.h" />
<ClInclude Include="Renderbuffer.h" /> <ClInclude Include="Renderbuffer.h" />
<ClInclude Include="renderer\Renderer.h" /> <ClInclude Include="renderer\Renderer.h" />
<ClInclude Include="renderer\Renderer9.h" />
<ClInclude Include="renderer\ShaderCache.h" /> <ClInclude Include="renderer\ShaderCache.h" />
<ClInclude Include="renderer\SwapChain.h" /> <ClInclude Include="renderer\SwapChain.h" />
<ClInclude Include="resource.h" /> <ClInclude Include="resource.h" />
...@@ -306,4 +307,4 @@ copy "$(OutDir)libGLESv2.lib" "$(ProjectDir)..\..\lib\$(Configuration)\" ...@@ -306,4 +307,4 @@ copy "$(OutDir)libGLESv2.lib" "$(ProjectDir)..\..\lib\$(Configuration)\"
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets"> <ImportGroup Label="ExtensionTargets">
</ImportGroup> </ImportGroup>
</Project> </Project>
\ No newline at end of file
...@@ -83,10 +83,10 @@ ...@@ -83,10 +83,10 @@
<ClCompile Include="VertexDataManager.cpp"> <ClCompile Include="VertexDataManager.cpp">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="renderer\Renderer.cpp"> <ClCompile Include="renderer\SwapChain.cpp">
<Filter>Renderer</Filter> <Filter>Renderer</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="renderer\SwapChain.cpp"> <ClCompile Include="renderer\Renderer9.cpp">
<Filter>Renderer</Filter> <Filter>Renderer</Filter>
</ClCompile> </ClCompile>
</ItemGroup> </ItemGroup>
...@@ -184,6 +184,9 @@ ...@@ -184,6 +184,9 @@
<ClInclude Include="renderer\SwapChain.h"> <ClInclude Include="renderer\SwapChain.h">
<Filter>Renderer</Filter> <Filter>Renderer</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="renderer\Renderer9.h">
<Filter>Renderer</Filter>
</ClInclude>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<None Include="libGLESv2.def"> <None Include="libGLESv2.def">
......
...@@ -10,22 +10,14 @@ ...@@ -10,22 +10,14 @@
#ifndef LIBGLESV2_RENDERER_RENDERER_H_ #ifndef LIBGLESV2_RENDERER_RENDERER_H_
#define LIBGLESV2_RENDERER_RENDERER_H_ #define LIBGLESV2_RENDERER_RENDERER_H_
#include <set>
#include <map>
#include <vector>
#define GL_APICALL #define GL_APICALL
#include <GLES2/gl2.h> #include <GLES2/gl2.h>
#include <GLES2/gl2ext.h> #include <GLES2/gl2ext.h>
#define EGLAPI #define EGLAPI
#include <EGL/egl.h> #include <EGL/egl.h>
#include <d3d9.h> // D3D9_REPLACE
#include "common/angleutils.h"
#include "libGLESv2/renderer/ShaderCache.h"
#include "libGLESv2/EnumTypes.h"
#include "libGLESv2/Texture.h" #include "libGLESv2/Texture.h"
#include "libGLESv2/EnumTypes.h"
const int versionWindowsVista = MAKEWORD(0x00, 0x06); const int versionWindowsVista = MAKEWORD(0x00, 0x06);
const int versionWindows7 = MAKEWORD(0x01, 0x06); const int versionWindows7 = MAKEWORD(0x01, 0x06);
...@@ -59,127 +51,63 @@ struct ConfigDesc ...@@ -59,127 +51,63 @@ struct ConfigDesc
class Renderer class Renderer
{ {
public: public:
Renderer(egl::Display *display, HMODULE hModule, HDC hDc); Renderer(egl::Display *display) : mDisplay(display) {};
virtual ~Renderer(); virtual ~Renderer() {};
virtual EGLint initialize(); virtual EGLint initialize() = 0;
virtual bool resetDevice(); virtual bool resetDevice() = 0;
virtual int generateConfigs(ConfigDesc **configDescList); virtual int generateConfigs(ConfigDesc **configDescList) = 0;
virtual void deleteConfigs(ConfigDesc *configDescList); virtual void deleteConfigs(ConfigDesc *configDescList) = 0;
virtual void startScene(); virtual void startScene() = 0;
virtual void endScene(); virtual void endScene() = 0;
virtual void sync(bool block); virtual void sync(bool block) = 0;
virtual IDirect3DQuery9* allocateEventQuery();
virtual void freeEventQuery(IDirect3DQuery9* query); virtual void setSamplerState(gl::SamplerType type, int index, const gl::SamplerState &sampler) = 0;
virtual void setTexture(gl::SamplerType type, int index, gl::Texture *texture) = 0;
// resource creation
virtual IDirect3DVertexShader9 *createVertexShader(const DWORD *function, size_t length); // D3D9_REPLACE
virtual IDirect3DPixelShader9 *createPixelShader(const DWORD *function, size_t length); // D3D9_REPLACE
#if 0
virtual void *createTexture2D();
virtual void *createTextureCube();
virtual void *createQuery();;
virtual void *createIndexBuffer();
virtual void *createVertexbuffer();
// state setup
virtual void applyShaders();
virtual void applyConstants();
virtual void applyRenderTargets();
virtual void applyState();
#endif
virtual void setSamplerState(gl::SamplerType type, int index, const gl::SamplerState &sampler);
virtual void setTexture(gl::SamplerType type, int index, gl::Texture *texture);
// lost device // lost device
virtual void markDeviceLost(); virtual void markDeviceLost() = 0;
virtual bool isDeviceLost(); virtual bool isDeviceLost() = 0;
virtual bool testDeviceLost(bool notify); virtual bool testDeviceLost(bool notify) = 0;
virtual bool testDeviceResettable(); virtual bool testDeviceResettable() = 0;
// Renderer capabilities // Renderer capabilities
virtual IDirect3DDevice9 *getDevice() {return mDevice;}; // D3D9_REPLACE virtual DWORD getAdapterVendor() const = 0;
virtual DWORD getAdapterVendor() const; virtual const char *getAdapterDescription() const = 0;
virtual const char *getAdapterDescription() const; virtual GUID getAdapterIdentifier() const = 0;
virtual GUID getAdapterIdentifier() const;
virtual bool getDXT1TextureSupport() = 0;
virtual bool getDXT1TextureSupport(); virtual bool getDXT3TextureSupport() = 0;
virtual bool getDXT3TextureSupport(); virtual bool getDXT5TextureSupport() = 0;
virtual bool getDXT5TextureSupport(); virtual bool getEventQuerySupport() = 0;
virtual bool getEventQuerySupport(); virtual bool getFloat32TextureSupport(bool *filtering, bool *renderable) = 0;
virtual bool getFloat32TextureSupport(bool *filtering, bool *renderable); virtual bool getFloat16TextureSupport(bool *filtering, bool *renderable) = 0;
virtual bool getFloat16TextureSupport(bool *filtering, bool *renderable); virtual bool getLuminanceTextureSupport() = 0;
virtual bool getLuminanceTextureSupport(); virtual bool getLuminanceAlphaTextureSupport() = 0;
virtual bool getLuminanceAlphaTextureSupport(); virtual bool getVertexTextureSupport() const = 0;
virtual bool getVertexTextureSupport() const; virtual bool getNonPower2TextureSupport() const = 0;
virtual bool getNonPower2TextureSupport() const; virtual bool getDepthTextureSupport() const = 0;
virtual bool getDepthTextureSupport() const; virtual bool getOcclusionQuerySupport() const = 0;
virtual bool getOcclusionQuerySupport() const; virtual bool getInstancingSupport() const = 0;
virtual bool getInstancingSupport() const; virtual bool getTextureFilterAnisotropySupport() const = 0;
virtual bool getTextureFilterAnisotropySupport() const; virtual float getTextureMaxAnisotropy() const = 0;
virtual float getTextureMaxAnisotropy() const; virtual bool getShareHandleSupport() const = 0;
virtual bool getShareHandleSupport() const;
virtual bool getShaderModel3Support() const = 0;
virtual bool getShaderModel3Support() const; virtual float getMaxPointSize() const = 0;
virtual float getMaxPointSize() const; virtual int getMaxTextureWidth() const = 0;
virtual int getMaxTextureWidth() const; virtual int getMaxTextureHeight() const = 0;
virtual int getMaxTextureHeight() const; virtual bool get32BitIndexSupport() const = 0;
virtual bool get32BitIndexSupport() const; virtual int getMinSwapInterval() const = 0;
virtual DWORD getCapsDeclTypes() const; // D3D9_REPLACE virtual int getMaxSwapInterval() const = 0;
virtual int getMinSwapInterval() const;
virtual int getMaxSwapInterval() const; virtual GLsizei getMaxSupportedSamples() const = 0;
virtual GLsizei getMaxSupportedSamples() const; protected:
virtual int getNearestSupportedSamples(D3DFORMAT format, int requested) const;
virtual D3DPOOL getBufferPool(DWORD usage) const;
virtual D3DPOOL getTexturePool(DWORD usage) const;
private:
DISALLOW_COPY_AND_ASSIGN(Renderer);
void getMultiSampleSupport(D3DFORMAT format, bool *multiSampleArray); // D3D9_REPLACE
static const D3DFORMAT mRenderTargetFormats[];
static const D3DFORMAT mDepthStencilFormats[];
egl::Display *mDisplay; egl::Display *mDisplay;
const HDC mDc;
HMODULE mD3d9Module;
void initializeDevice();
D3DPRESENT_PARAMETERS getDefaultPresentParameters();
void releaseDeviceResources();
UINT mAdapter;
D3DDEVTYPE mDeviceType;
IDirect3D9 *mD3d9; // Always valid after successful initialization.
IDirect3D9Ex *mD3d9Ex; // Might be null if D3D9Ex is not supported.
IDirect3DDevice9 *mDevice;
IDirect3DDevice9Ex *mDeviceEx; // Might be null if D3D9Ex is not supported.
HWND mDeviceWindow;
bool mDeviceLost;
D3DCAPS9 mDeviceCaps;
D3DADAPTER_IDENTIFIER9 mAdapterIdentifier;
bool mSceneStarted;
bool mSupportsNonPower2Textures;
bool mSupportsTextureFilterAnisotropy;
int mMinSwapInterval;
int mMaxSwapInterval;
std::map<D3DFORMAT, bool *> mMultiSampleSupport;
GLsizei mMaxSupportedSamples;
// A pool of event queries that are currently unused.
std::vector<IDirect3DQuery9*> mEventQueryPool;
VertexShaderCache mVertexShaderCache;
PixelShaderCache mPixelShaderCache;
}; };
} }
......
//
// 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.
//
// Renderer.h: Defines a back-end specific class that hides the details of the
// implementation-specific renderer.
#ifndef LIBGLESV2_RENDERER_RENDERER9_H_
#define LIBGLESV2_RENDERER_RENDERER9_H_
#include <set>
#include <map>
#include <vector>
#define GL_APICALL
#include <GLES2/gl2.h>
#include <GLES2/gl2ext.h>
#define EGLAPI
#include <EGL/egl.h>
#include <d3d9.h> // D3D9_REPLACE
#include "common/angleutils.h"
#include "libGLESv2/renderer/ShaderCache.h"
#include "libGLESv2/renderer/Renderer.h"
namespace renderer
{
class Renderer9 : public Renderer
{
public:
Renderer9(egl::Display *display, HMODULE hModule, HDC hDc);
virtual ~Renderer9();
virtual EGLint initialize();
virtual bool resetDevice();
virtual int generateConfigs(ConfigDesc **configDescList);
virtual void deleteConfigs(ConfigDesc *configDescList);
virtual void startScene();
virtual void endScene();
virtual void sync(bool block);
IDirect3DQuery9* allocateEventQuery();
void freeEventQuery(IDirect3DQuery9* query);
// resource creation
IDirect3DVertexShader9 *createVertexShader(const DWORD *function, size_t length); // D3D9_REPLACE
IDirect3DPixelShader9 *createPixelShader(const DWORD *function, size_t length); // D3D9_REPLACE
#if 0
void *createTexture2D();
void *createTextureCube();
void *createQuery();;
void *createIndexBuffer();
void *createVertexbuffer();
// state setup
void applyShaders();
void applyConstants();
void applyRenderTargets();
void applyState();
#endif
virtual void setSamplerState(gl::SamplerType type, int index, const gl::SamplerState &sampler);
virtual void setTexture(gl::SamplerType type, int index, gl::Texture *texture);
// lost device
virtual void markDeviceLost();
virtual bool isDeviceLost();
virtual bool testDeviceLost(bool notify);
virtual bool testDeviceResettable();
// Renderer capabilities
IDirect3DDevice9 *getDevice() {return mDevice;}; // D3D9_REPLACE
virtual DWORD getAdapterVendor() const;
virtual const char *getAdapterDescription() const;
virtual GUID getAdapterIdentifier() const;
virtual bool getDXT1TextureSupport();
virtual bool getDXT3TextureSupport();
virtual bool getDXT5TextureSupport();
virtual bool getEventQuerySupport();
virtual bool getFloat32TextureSupport(bool *filtering, bool *renderable);
virtual bool getFloat16TextureSupport(bool *filtering, bool *renderable);
virtual bool getLuminanceTextureSupport();
virtual bool getLuminanceAlphaTextureSupport();
virtual bool getVertexTextureSupport() const;
virtual bool getNonPower2TextureSupport() const;
virtual bool getDepthTextureSupport() const;
virtual bool getOcclusionQuerySupport() const;
virtual bool getInstancingSupport() const;
virtual bool getTextureFilterAnisotropySupport() const;
virtual float getTextureMaxAnisotropy() const;
virtual bool getShareHandleSupport() const;
virtual bool getShaderModel3Support() const;
virtual float getMaxPointSize() const;
virtual int getMaxTextureWidth() const;
virtual int getMaxTextureHeight() const;
virtual bool get32BitIndexSupport() const;
DWORD getCapsDeclTypes() const; // D3D9_REPLACE
virtual int getMinSwapInterval() const;
virtual int getMaxSwapInterval() const;
virtual GLsizei getMaxSupportedSamples() const;
int getNearestSupportedSamples(D3DFORMAT format, int requested) const;
D3DPOOL getBufferPool(DWORD usage) const;
D3DPOOL getTexturePool(DWORD usage) const;
private:
DISALLOW_COPY_AND_ASSIGN(Renderer9);
void getMultiSampleSupport(D3DFORMAT format, bool *multiSampleArray); // D3D9_REPLACE
static const D3DFORMAT mRenderTargetFormats[];
static const D3DFORMAT mDepthStencilFormats[];
HMODULE mD3d9Module;
HDC mDc;
void initializeDevice();
D3DPRESENT_PARAMETERS getDefaultPresentParameters();
void releaseDeviceResources();
UINT mAdapter;
D3DDEVTYPE mDeviceType;
IDirect3D9 *mD3d9; // Always valid after successful initialization.
IDirect3D9Ex *mD3d9Ex; // Might be null if D3D9Ex is not supported.
IDirect3DDevice9 *mDevice;
IDirect3DDevice9Ex *mDeviceEx; // Might be null if D3D9Ex is not supported.
HWND mDeviceWindow;
bool mDeviceLost;
D3DCAPS9 mDeviceCaps;
D3DADAPTER_IDENTIFIER9 mAdapterIdentifier;
bool mSceneStarted;
bool mSupportsNonPower2Textures;
bool mSupportsTextureFilterAnisotropy;
int mMinSwapInterval;
int mMaxSwapInterval;
std::map<D3DFORMAT, bool *> mMultiSampleSupport;
GLsizei mMaxSupportedSamples;
// A pool of event queries that are currently unused.
std::vector<IDirect3DQuery9*> mEventQueryPool;
VertexShaderCache mVertexShaderCache;
PixelShaderCache mPixelShaderCache;
};
}
#endif // LIBGLESV2_RENDERER_RENDERER9_H_
...@@ -11,13 +11,13 @@ ...@@ -11,13 +11,13 @@
#include "common/debug.h" #include "common/debug.h"
#include "libGLESv2/utilities.h" #include "libGLESv2/utilities.h"
#include "libGLESv2/renderer/Renderer.h" #include "libGLESv2/renderer/Renderer9.h" // D3D9_REPLACE
#include "libGLESv2/Context.h" #include "libGLESv2/Context.h"
namespace renderer namespace renderer
{ {
SwapChain::SwapChain(Renderer *renderer, HWND window, HANDLE shareHandle, SwapChain::SwapChain(Renderer9 *renderer, HWND window, HANDLE shareHandle,
GLenum backBufferFormat, GLenum depthBufferFormat) GLenum backBufferFormat, GLenum depthBufferFormat)
: mRenderer(renderer), mWindow(window), mShareHandle(shareHandle), : mRenderer(renderer), mWindow(window), mShareHandle(shareHandle),
mBackBufferFormat(backBufferFormat), mDepthBufferFormat(depthBufferFormat) mBackBufferFormat(backBufferFormat), mDepthBufferFormat(depthBufferFormat)
......
...@@ -16,18 +16,18 @@ ...@@ -16,18 +16,18 @@
#define EGLAPI #define EGLAPI
#include <EGL/egl.h> #include <EGL/egl.h>
#include "common/angleutils.h" #include <d3d9.h> // D3D9_REPLACE
#include <d3d9.h> // D3D9_REPLACE #include "common/angleutils.h"
namespace renderer namespace renderer
{ {
class Renderer; class Renderer9; // D3D9_REPLACE
class SwapChain class SwapChain
{ {
public: public:
SwapChain(Renderer *renderer, HWND window, HANDLE shareHandle, SwapChain(Renderer9 *renderer, HWND window, HANDLE shareHandle,
GLenum backBufferFormat, GLenum depthBufferFormat); GLenum backBufferFormat, GLenum depthBufferFormat);
virtual ~SwapChain(); virtual ~SwapChain();
...@@ -45,7 +45,7 @@ class SwapChain ...@@ -45,7 +45,7 @@ class SwapChain
void release(); void release();
Renderer *mRenderer; Renderer9 *mRenderer; // D3D9_REPLACE
EGLint mHeight; EGLint mHeight;
EGLint mWidth; EGLint mWidth;
......
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