Moves creation of renderer-specific texture storage objects to the renderer.

TRAC #22300 Author: Shannon Woods Signed-off-by: Geoff Lang Signed-off-by: Daniel Koch git-svn-id: https://angleproject.googlecode.com/svn/branches/dx11proto@1614 736b8ea6-26fd-11df-bfd4-992fa37f6226
parent 87705f82
...@@ -173,6 +173,9 @@ class Renderer ...@@ -173,6 +173,9 @@ class Renderer
// Image operations // Image operations
virtual Image *createImage() = 0; virtual Image *createImage() = 0;
virtual void generateMipmap(Image *dest, Image *source) = 0; virtual void generateMipmap(Image *dest, Image *source) = 0;
virtual TextureStorage *createTextureStorage2D(SwapChain *swapChain) = 0;
virtual TextureStorage *createTextureStorage2D(int levels, GLenum internalformat, GLenum usage, bool forceRenderable, GLsizei width, GLsizei height) = 0;
virtual TextureStorage *createTextureStorageCube(int levels, GLenum internalformat, GLenum usage, bool forceRenderable, int size) = 0;
// Buffer creation // Buffer creation
virtual VertexBuffer *createVertexBuffer() = 0; virtual VertexBuffer *createVertexBuffer() = 0;
......
...@@ -1274,4 +1274,25 @@ void Renderer11::generateMipmap(Image *dest, Image *src) ...@@ -1274,4 +1274,25 @@ void Renderer11::generateMipmap(Image *dest, Image *src)
return; return;
} }
TextureStorage *Renderer11::createTextureStorage2D(SwapChain *swapChain)
{
// TODO
UNIMPLEMENTED();
return NULL;
}
TextureStorage *Renderer11::createTextureStorage2D(int levels, GLenum internalformat, GLenum usage, bool forceRenderable, GLsizei width, GLsizei height)
{
// TODO
UNIMPLEMENTED();
return NULL;
}
TextureStorage *Renderer11::createTextureStorageCube(int levels, GLenum internalformat, GLenum usage, bool forceRenderable, int size)
{
// TODO
UNIMPLEMENTED();
return NULL;
}
} }
\ No newline at end of file
...@@ -140,6 +140,9 @@ class Renderer11 : public Renderer ...@@ -140,6 +140,9 @@ class Renderer11 : public Renderer
// Image operations // Image operations
virtual Image *createImage(); virtual Image *createImage();
virtual void generateMipmap(Image *dest, Image *source); virtual void generateMipmap(Image *dest, Image *source);
virtual TextureStorage *createTextureStorage2D(SwapChain *swapChain);
virtual TextureStorage *createTextureStorage2D(int levels, GLenum internalformat, GLenum usage, bool forceRenderable, GLsizei width, GLsizei height);
virtual TextureStorage *createTextureStorageCube(int levels, GLenum internalformat, GLenum usage, bool forceRenderable, int size);
// Buffer creation // Buffer creation
virtual VertexBuffer *createVertexBuffer(); virtual VertexBuffer *createVertexBuffer();
......
...@@ -3074,4 +3074,20 @@ void Renderer9::generateMipmap(Image *dest, Image *src) ...@@ -3074,4 +3074,20 @@ void Renderer9::generateMipmap(Image *dest, Image *src)
Image9::generateMipmap(dst9, src9); Image9::generateMipmap(dst9, src9);
} }
TextureStorage *Renderer9::createTextureStorage2D(SwapChain *swapChain)
{
SwapChain9 *swapChain9 = SwapChain9::makeSwapChain9(swapChain);
return new TextureStorage9_2D(this, swapChain9);
}
TextureStorage *Renderer9::createTextureStorage2D(int levels, GLenum internalformat, GLenum usage, bool forceRenderable, GLsizei width, GLsizei height)
{
return new TextureStorage9_2D(this, levels, internalformat, usage, forceRenderable, width, height);
}
TextureStorage *Renderer9::createTextureStorageCube(int levels, GLenum internalformat, GLenum usage, bool forceRenderable, int size)
{
return new TextureStorage9_Cube(this, levels, internalformat, usage, forceRenderable, size);
}
} }
\ No newline at end of file
...@@ -171,6 +171,9 @@ class Renderer9 : public Renderer ...@@ -171,6 +171,9 @@ class Renderer9 : public Renderer
// Image operations // Image operations
virtual Image *createImage(); virtual Image *createImage();
virtual void generateMipmap(Image *dest, Image *source); virtual void generateMipmap(Image *dest, Image *source);
virtual TextureStorage *createTextureStorage2D(SwapChain *swapChain);
virtual TextureStorage *createTextureStorage2D(int levels, GLenum internalformat, GLenum usage, bool forceRenderable, GLsizei width, GLsizei height);
virtual TextureStorage *createTextureStorageCube(int levels, GLenum internalformat, GLenum usage, bool forceRenderable, int size);
// Buffer creation // Buffer creation
virtual VertexBuffer *createVertexBuffer(); virtual VertexBuffer *createVertexBuffer();
......
...@@ -68,15 +68,13 @@ int TextureStorageInterface::levelCount() ...@@ -68,15 +68,13 @@ int TextureStorageInterface::levelCount()
TextureStorageInterface2D::TextureStorageInterface2D(Renderer *renderer, SwapChain9 *swapchain) TextureStorageInterface2D::TextureStorageInterface2D(Renderer *renderer, SwapChain9 *swapchain)
: mRenderTargetSerial(gl::RenderbufferStorage::issueSerial()) : mRenderTargetSerial(gl::RenderbufferStorage::issueSerial())
{ {
TextureStorage9_2D *newInterface = new TextureStorage9_2D(renderer, swapchain); mInstance = renderer->createTextureStorage2D(swapchain);
mInstance = newInterface;
} }
TextureStorageInterface2D::TextureStorageInterface2D(Renderer *renderer, int levels, GLenum internalformat, GLenum usage, bool forceRenderable, GLsizei width, GLsizei height) TextureStorageInterface2D::TextureStorageInterface2D(Renderer *renderer, int levels, GLenum internalformat, GLenum usage, bool forceRenderable, GLsizei width, GLsizei height)
: mRenderTargetSerial(gl::RenderbufferStorage::issueSerial()) : mRenderTargetSerial(gl::RenderbufferStorage::issueSerial())
{ {
TextureStorage9_2D *newInterface = new TextureStorage9_2D(renderer, levels, internalformat, usage, forceRenderable, width, height); // D3D9_REPLACE mInstance = renderer->createTextureStorage2D(levels, internalformat, usage, forceRenderable, width, height);
mInstance = newInterface;
} }
TextureStorageInterface2D::~TextureStorageInterface2D() TextureStorageInterface2D::~TextureStorageInterface2D()
...@@ -101,8 +99,7 @@ unsigned int TextureStorageInterface2D::getRenderTargetSerial(GLenum target) con ...@@ -101,8 +99,7 @@ unsigned int TextureStorageInterface2D::getRenderTargetSerial(GLenum target) con
TextureStorageInterfaceCube::TextureStorageInterfaceCube(Renderer *renderer, int levels, GLenum internalformat, GLenum usage, bool forceRenderable, int size) TextureStorageInterfaceCube::TextureStorageInterfaceCube(Renderer *renderer, int levels, GLenum internalformat, GLenum usage, bool forceRenderable, int size)
: mFirstRenderTargetSerial(gl::RenderbufferStorage::issueCubeSerials()) : mFirstRenderTargetSerial(gl::RenderbufferStorage::issueCubeSerials())
{ {
TextureStorage9_Cube *newInterface = new TextureStorage9_Cube(renderer, levels, internalformat, usage, forceRenderable, size); // D3D9_REPLACE mInstance = renderer->createTextureStorageCube(levels, internalformat, usage, forceRenderable, size);
mInstance = newInterface;
} }
TextureStorageInterfaceCube::~TextureStorageInterfaceCube() TextureStorageInterfaceCube::~TextureStorageInterfaceCube()
......
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