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
// Image operations
virtual Image *createImage() = 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
virtual VertexBuffer *createVertexBuffer() = 0;
......
......@@ -1274,4 +1274,25 @@ void Renderer11::generateMipmap(Image *dest, Image *src)
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
// Image operations
virtual Image *createImage();
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
virtual VertexBuffer *createVertexBuffer();
......
......@@ -3074,4 +3074,20 @@ void Renderer9::generateMipmap(Image *dest, Image *src)
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
// Image operations
virtual Image *createImage();
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
virtual VertexBuffer *createVertexBuffer();
......
......@@ -68,15 +68,13 @@ int TextureStorageInterface::levelCount()
TextureStorageInterface2D::TextureStorageInterface2D(Renderer *renderer, SwapChain9 *swapchain)
: mRenderTargetSerial(gl::RenderbufferStorage::issueSerial())
{
TextureStorage9_2D *newInterface = new TextureStorage9_2D(renderer, swapchain);
mInstance = newInterface;
mInstance = renderer->createTextureStorage2D(swapchain);
}
TextureStorageInterface2D::TextureStorageInterface2D(Renderer *renderer, int levels, GLenum internalformat, GLenum usage, bool forceRenderable, GLsizei width, GLsizei height)
: mRenderTargetSerial(gl::RenderbufferStorage::issueSerial())
{
TextureStorage9_2D *newInterface = new TextureStorage9_2D(renderer, levels, internalformat, usage, forceRenderable, width, height); // D3D9_REPLACE
mInstance = newInterface;
mInstance = renderer->createTextureStorage2D(levels, internalformat, usage, forceRenderable, width, height);
}
TextureStorageInterface2D::~TextureStorageInterface2D()
......@@ -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)
: mFirstRenderTargetSerial(gl::RenderbufferStorage::issueCubeSerials())
{
TextureStorage9_Cube *newInterface = new TextureStorage9_Cube(renderer, levels, internalformat, usage, forceRenderable, size); // D3D9_REPLACE
mInstance = newInterface;
mInstance = renderer->createTextureStorageCube(levels, internalformat, usage, forceRenderable, size);
}
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