Commit bf712d0a by Nicolas Capens

Remove max level from texture storage.

BUG=angle:596 Change-Id: I174e3b73c0cb675b5c9aea5722a7051a34639831 Reviewed-on: https://chromium-review.googlesource.com/192340Tested-by: 's avatarNicolas Capens <nicolascapens@chromium.org> Reviewed-by: 's avatarShannon Woods <shannonwoods@chromium.org> Reviewed-by: 's avatarJamie Madill <jmadill@chromium.org>
parent fa7b76d0
...@@ -392,7 +392,7 @@ bool Texture::isImmutable() const ...@@ -392,7 +392,7 @@ bool Texture::isImmutable() const
int Texture::immutableLevelCount() int Texture::immutableLevelCount()
{ {
return (mImmutable ? getNativeTexture()->getStorageInstance()->getMaxLevel() : 0); return (mImmutable ? getNativeTexture()->getStorageInstance()->getLevelCount() : 0);
} }
GLint Texture::creationLevels(GLsizei width, GLsizei height, GLsizei depth) const GLint Texture::creationLevels(GLsizei width, GLsizei height, GLsizei depth) const
...@@ -487,8 +487,8 @@ void Texture2D::redefineImage(GLint level, GLenum internalformat, GLsizei width, ...@@ -487,8 +487,8 @@ void Texture2D::redefineImage(GLint level, GLenum internalformat, GLsizei width,
if (mTexStorage) if (mTexStorage)
{ {
const int storageLevels = mTexStorage->getMaxLevel(); const int storageLevels = mTexStorage->getLevelCount();
if ((level >= storageLevels && storageLevels != 0) || if ((level >= storageLevels && storageLevels != 0) ||
width != storageWidth || width != storageWidth ||
height != storageHeight || height != storageHeight ||
...@@ -710,7 +710,7 @@ void Texture2D::storage(GLsizei levels, GLenum internalformat, GLsizei width, GL ...@@ -710,7 +710,7 @@ void Texture2D::storage(GLsizei levels, GLenum internalformat, GLsizei width, GL
mImmutable = true; mImmutable = true;
setCompleteTexStorage(new rx::TextureStorageInterface2D(mRenderer, levels, internalformat, IsRenderTargetUsage(mUsage), width, height)); setCompleteTexStorage(new rx::TextureStorageInterface2D(mRenderer, internalformat, IsRenderTargetUsage(mUsage), width, height, levels));
} }
void Texture2D::setCompleteTexStorage(rx::TextureStorageInterface2D *newCompleteTexStorage) void Texture2D::setCompleteTexStorage(rx::TextureStorageInterface2D *newCompleteTexStorage)
...@@ -720,7 +720,7 @@ void Texture2D::setCompleteTexStorage(rx::TextureStorageInterface2D *newComplete ...@@ -720,7 +720,7 @@ void Texture2D::setCompleteTexStorage(rx::TextureStorageInterface2D *newComplete
if (mTexStorage && mTexStorage->isManaged()) if (mTexStorage && mTexStorage->isManaged())
{ {
for (int level = 0; level < mTexStorage->getMaxLevel(); level++) for (int level = 0; level < mTexStorage->getLevelCount(); level++)
{ {
mImageArray[level]->setManagedSurface(mTexStorage, level); mImageArray[level]->setManagedSurface(mTexStorage, level);
} }
...@@ -899,9 +899,9 @@ rx::TextureStorageInterface2D *Texture2D::createCompleteStorage(bool renderTarge ...@@ -899,9 +899,9 @@ rx::TextureStorageInterface2D *Texture2D::createCompleteStorage(bool renderTarge
ASSERT(width > 0 && height > 0); ASSERT(width > 0 && height > 0);
// use existing storage level count, when previously specified by TexStorage*D // use existing storage level count, when previously specified by TexStorage*D
GLint levels = (mTexStorage ? mTexStorage->getMaxLevel() : creationLevels(width, height, 1)); GLint levels = (mTexStorage ? mTexStorage->getLevelCount() : creationLevels(width, height, 1));
return new rx::TextureStorageInterface2D(mRenderer, levels, getBaseLevelInternalFormat(), renderTarget, width, height); return new rx::TextureStorageInterface2D(mRenderer, getBaseLevelInternalFormat(), renderTarget, width, height, levels);
} }
void Texture2D::updateStorage() void Texture2D::updateStorage()
...@@ -1046,7 +1046,7 @@ rx::RenderTarget *Texture2D::getDepthSencil(GLint level) ...@@ -1046,7 +1046,7 @@ rx::RenderTarget *Texture2D::getDepthSencil(GLint level)
bool Texture2D::isValidLevel(int level) const bool Texture2D::isValidLevel(int level) const
{ {
return (mTexStorage ? (level >= 0 && level < mTexStorage->getMaxLevel()) : false); return (mTexStorage ? (level >= 0 && level < mTexStorage->getLevelCount()) : false);
} }
TextureCubeMap::TextureCubeMap(rx::Renderer *renderer, GLuint id) : Texture(renderer, id, GL_TEXTURE_CUBE_MAP) TextureCubeMap::TextureCubeMap(rx::Renderer *renderer, GLuint id) : Texture(renderer, id, GL_TEXTURE_CUBE_MAP)
...@@ -1351,9 +1351,9 @@ rx::TextureStorageInterfaceCube *TextureCubeMap::createCompleteStorage(bool rend ...@@ -1351,9 +1351,9 @@ rx::TextureStorageInterfaceCube *TextureCubeMap::createCompleteStorage(bool rend
ASSERT(size > 0); ASSERT(size > 0);
// use existing storage level count, when previously specified by TexStorage*D // use existing storage level count, when previously specified by TexStorage*D
GLint levels = (mTexStorage ? mTexStorage->getMaxLevel() : creationLevels(size, size, 1)); GLint levels = (mTexStorage ? mTexStorage->getLevelCount() : creationLevels(size, size, 1));
return new rx::TextureStorageInterfaceCube(mRenderer, levels, getBaseLevelInternalFormat(), renderTarget, size); return new rx::TextureStorageInterfaceCube(mRenderer, getBaseLevelInternalFormat(), renderTarget, size, levels);
} }
void TextureCubeMap::setCompleteTexStorage(rx::TextureStorageInterfaceCube *newCompleteTexStorage) void TextureCubeMap::setCompleteTexStorage(rx::TextureStorageInterfaceCube *newCompleteTexStorage)
...@@ -1363,11 +1363,11 @@ void TextureCubeMap::setCompleteTexStorage(rx::TextureStorageInterfaceCube *newC ...@@ -1363,11 +1363,11 @@ void TextureCubeMap::setCompleteTexStorage(rx::TextureStorageInterfaceCube *newC
if (mTexStorage && mTexStorage->isManaged()) if (mTexStorage && mTexStorage->isManaged())
{ {
int levels = mTexStorage->getMaxLevel(); int levels = mTexStorage->getLevelCount();
for (int faceIndex = 0; faceIndex < 6; faceIndex++) for (int faceIndex = 0; faceIndex < 6; faceIndex++)
{ {
for (int level = 0; level < mTexStorage->getMaxLevel(); level++) for (int level = 0; level < mTexStorage->getLevelCount(); level++)
{ {
mImageArray[faceIndex][level]->setManagedSurface(mTexStorage, faceIndex, level); mImageArray[faceIndex][level]->setManagedSurface(mTexStorage, faceIndex, level);
} }
...@@ -1459,8 +1459,8 @@ void TextureCubeMap::redefineImage(int faceIndex, GLint level, GLenum internalfo ...@@ -1459,8 +1459,8 @@ void TextureCubeMap::redefineImage(int faceIndex, GLint level, GLenum internalfo
if (mTexStorage) if (mTexStorage)
{ {
const int storageLevels = mTexStorage->getMaxLevel(); const int storageLevels = mTexStorage->getLevelCount();
if ((level >= storageLevels && storageLevels != 0) || if ((level >= storageLevels && storageLevels != 0) ||
width != storageWidth || width != storageWidth ||
height != storageHeight || height != storageHeight ||
...@@ -1579,7 +1579,7 @@ void TextureCubeMap::storage(GLsizei levels, GLenum internalformat, GLsizei size ...@@ -1579,7 +1579,7 @@ void TextureCubeMap::storage(GLsizei levels, GLenum internalformat, GLsizei size
mImmutable = true; mImmutable = true;
setCompleteTexStorage(new rx::TextureStorageInterfaceCube(mRenderer, levels, internalformat, IsRenderTargetUsage(mUsage), size)); setCompleteTexStorage(new rx::TextureStorageInterfaceCube(mRenderer, internalformat, IsRenderTargetUsage(mUsage), size, levels));
} }
void TextureCubeMap::generateMipmaps() void TextureCubeMap::generateMipmaps()
...@@ -1699,7 +1699,7 @@ rx::RenderTarget *TextureCubeMap::getDepthStencil(GLenum target, GLint level) ...@@ -1699,7 +1699,7 @@ rx::RenderTarget *TextureCubeMap::getDepthStencil(GLenum target, GLint level)
bool TextureCubeMap::isValidFaceLevel(int faceIndex, int level) const bool TextureCubeMap::isValidFaceLevel(int faceIndex, int level) const
{ {
return (mTexStorage ? (level >= 0 && level < mTexStorage->getMaxLevel()) : 0); return (mTexStorage ? (level >= 0 && level < mTexStorage->getLevelCount()) : 0);
} }
Texture3D::Texture3D(rx::Renderer *renderer, GLuint id) : Texture(renderer, id, GL_TEXTURE_3D) Texture3D::Texture3D(rx::Renderer *renderer, GLuint id) : Texture(renderer, id, GL_TEXTURE_3D)
...@@ -1847,7 +1847,7 @@ void Texture3D::storage(GLsizei levels, GLenum internalformat, GLsizei width, GL ...@@ -1847,7 +1847,7 @@ void Texture3D::storage(GLsizei levels, GLenum internalformat, GLsizei width, GL
mImmutable = true; mImmutable = true;
setCompleteTexStorage(new rx::TextureStorageInterface3D(mRenderer, levels, internalformat, IsRenderTargetUsage(mUsage), width, height, depth)); setCompleteTexStorage(new rx::TextureStorageInterface3D(mRenderer, internalformat, IsRenderTargetUsage(mUsage), width, height, depth, levels));
} }
void Texture3D::generateMipmaps() void Texture3D::generateMipmaps()
...@@ -2039,7 +2039,7 @@ unsigned int Texture3D::getRenderTargetSerial(GLint level, GLint layer) ...@@ -2039,7 +2039,7 @@ unsigned int Texture3D::getRenderTargetSerial(GLint level, GLint layer)
bool Texture3D::isValidLevel(int level) const bool Texture3D::isValidLevel(int level) const
{ {
return (mTexStorage ? (level >= 0 && level < mTexStorage->getMaxLevel()) : 0); return (mTexStorage ? (level >= 0 && level < mTexStorage->getLevelCount()) : 0);
} }
void Texture3D::initializeStorage(bool renderTarget) void Texture3D::initializeStorage(bool renderTarget)
...@@ -2074,9 +2074,9 @@ rx::TextureStorageInterface3D *Texture3D::createCompleteStorage(bool renderTarge ...@@ -2074,9 +2074,9 @@ rx::TextureStorageInterface3D *Texture3D::createCompleteStorage(bool renderTarge
ASSERT(width > 0 && height > 0 && depth > 0); ASSERT(width > 0 && height > 0 && depth > 0);
// use existing storage level count, when previously specified by TexStorage*D // use existing storage level count, when previously specified by TexStorage*D
GLint levels = (mTexStorage ? mTexStorage->getMaxLevel() : creationLevels(width, height, depth)); GLint levels = (mTexStorage ? mTexStorage->getLevelCount() : creationLevels(width, height, depth));
return new rx::TextureStorageInterface3D(mRenderer, levels, getBaseLevelInternalFormat(), renderTarget, width, height, depth); return new rx::TextureStorageInterface3D(mRenderer, getBaseLevelInternalFormat(), renderTarget, width, height, depth, levels);
} }
void Texture3D::setCompleteTexStorage(rx::TextureStorageInterface3D *newCompleteTexStorage) void Texture3D::setCompleteTexStorage(rx::TextureStorageInterface3D *newCompleteTexStorage)
...@@ -2204,7 +2204,7 @@ void Texture3D::redefineImage(GLint level, GLenum internalformat, GLsizei width, ...@@ -2204,7 +2204,7 @@ void Texture3D::redefineImage(GLint level, GLenum internalformat, GLsizei width,
if (mTexStorage) if (mTexStorage)
{ {
const int storageLevels = mTexStorage->getMaxLevel(); const int storageLevels = mTexStorage->getLevelCount();
if ((level >= storageLevels && storageLevels != 0) || if ((level >= storageLevels && storageLevels != 0) ||
width != storageWidth || width != storageWidth ||
...@@ -2396,7 +2396,7 @@ void Texture2DArray::storage(GLsizei levels, GLenum internalformat, GLsizei widt ...@@ -2396,7 +2396,7 @@ void Texture2DArray::storage(GLsizei levels, GLenum internalformat, GLsizei widt
} }
mImmutable = true; mImmutable = true;
setCompleteTexStorage(new rx::TextureStorageInterface2DArray(mRenderer, levels, internalformat, IsRenderTargetUsage(mUsage), width, height, depth)); setCompleteTexStorage(new rx::TextureStorageInterface2DArray(mRenderer, internalformat, IsRenderTargetUsage(mUsage), width, height, depth, levels));
} }
void Texture2DArray::generateMipmaps() void Texture2DArray::generateMipmaps()
...@@ -2593,7 +2593,7 @@ unsigned int Texture2DArray::getRenderTargetSerial(GLint level, GLint layer) ...@@ -2593,7 +2593,7 @@ unsigned int Texture2DArray::getRenderTargetSerial(GLint level, GLint layer)
bool Texture2DArray::isValidLevel(int level) const bool Texture2DArray::isValidLevel(int level) const
{ {
return (mTexStorage ? (level >= 0 && level < mTexStorage->getMaxLevel()) : 0); return (mTexStorage ? (level >= 0 && level < mTexStorage->getLevelCount()) : 0);
} }
void Texture2DArray::initializeStorage(bool renderTarget) void Texture2DArray::initializeStorage(bool renderTarget)
...@@ -2628,9 +2628,9 @@ rx::TextureStorageInterface2DArray *Texture2DArray::createCompleteStorage(bool r ...@@ -2628,9 +2628,9 @@ rx::TextureStorageInterface2DArray *Texture2DArray::createCompleteStorage(bool r
ASSERT(width > 0 && height > 0 && depth > 0); ASSERT(width > 0 && height > 0 && depth > 0);
// use existing storage level count, when previously specified by TexStorage*D // use existing storage level count, when previously specified by TexStorage*D
GLint levels = (mTexStorage ? mTexStorage->getMaxLevel() : creationLevels(width, height, 1)); GLint levels = (mTexStorage ? mTexStorage->getLevelCount() : creationLevels(width, height, 1));
return new rx::TextureStorageInterface2DArray(mRenderer, levels, getBaseLevelInternalFormat(), renderTarget, width, height, depth); return new rx::TextureStorageInterface2DArray(mRenderer, getBaseLevelInternalFormat(), renderTarget, width, height, depth, levels);
} }
void Texture2DArray::setCompleteTexStorage(rx::TextureStorageInterface2DArray *newCompleteTexStorage) void Texture2DArray::setCompleteTexStorage(rx::TextureStorageInterface2DArray *newCompleteTexStorage)
...@@ -2760,7 +2760,7 @@ void Texture2DArray::redefineImage(GLint level, GLenum internalformat, GLsizei w ...@@ -2760,7 +2760,7 @@ void Texture2DArray::redefineImage(GLint level, GLenum internalformat, GLsizei w
if (mTexStorage) if (mTexStorage)
{ {
const int storageLevels = mTexStorage->getMaxLevel(); const int storageLevels = mTexStorage->getLevelCount();
if ((level >= storageLevels && storageLevels != 0) || if ((level >= storageLevels && storageLevels != 0) ||
width != storageWidth || width != storageWidth ||
......
...@@ -254,10 +254,10 @@ class Renderer ...@@ -254,10 +254,10 @@ class Renderer
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(SwapChain *swapChain) = 0;
virtual TextureStorage *createTextureStorage2D(int maxLevel, GLenum internalformat, bool renderTarget, GLsizei width, GLsizei height) = 0; virtual TextureStorage *createTextureStorage2D(GLenum internalformat, bool renderTarget, GLsizei width, GLsizei height, int levels) = 0;
virtual TextureStorage *createTextureStorageCube(int maxLevel, GLenum internalformat, bool renderTarget, int size) = 0; virtual TextureStorage *createTextureStorageCube(GLenum internalformat, bool renderTarget, int size, int levels) = 0;
virtual TextureStorage *createTextureStorage3D(int maxLevel, GLenum internalformat, bool renderTarget, GLsizei width, GLsizei height, GLsizei depth) = 0; virtual TextureStorage *createTextureStorage3D(GLenum internalformat, bool renderTarget, GLsizei width, GLsizei height, GLsizei depth, int levels) = 0;
virtual TextureStorage *createTextureStorage2DArray(int maxLevel, GLenum internalformat, bool renderTarget, GLsizei width, GLsizei height, GLsizei depth) = 0; virtual TextureStorage *createTextureStorage2DArray(GLenum internalformat, bool renderTarget, GLsizei width, GLsizei height, GLsizei depth, int levels) = 0;
// Buffer creation // Buffer creation
virtual VertexBuffer *createVertexBuffer() = 0; virtual VertexBuffer *createVertexBuffer() = 0;
......
...@@ -57,22 +57,22 @@ int TextureStorageInterface::getTopLevel() const ...@@ -57,22 +57,22 @@ int TextureStorageInterface::getTopLevel() const
return mInstance->getTopLevel(); return mInstance->getTopLevel();
} }
int TextureStorageInterface::getMaxLevel() const int TextureStorageInterface::getLevelCount() const
{ {
return mInstance->getMaxLevel(); return mInstance->getLevelCount();
} }
TextureStorageInterface2D::TextureStorageInterface2D(Renderer *renderer, SwapChain *swapchain) TextureStorageInterface2D::TextureStorageInterface2D(Renderer *renderer, SwapChain *swapchain)
{ {
mFirstRenderTargetSerial = gl::RenderbufferStorage::issueSerials(1); mFirstRenderTargetSerial = gl::RenderbufferStorage::issueSerials(1);
mInstance = renderer->createTextureStorage2D(swapchain); mInstance = renderer->createTextureStorage2D(swapchain);
} }
TextureStorageInterface2D::TextureStorageInterface2D(Renderer *renderer, int maxLevel, GLenum internalformat, bool renderTarget, GLsizei width, GLsizei height) TextureStorageInterface2D::TextureStorageInterface2D(Renderer *renderer, GLenum internalformat, bool renderTarget, GLsizei width, GLsizei height, int levels)
{ {
mInstance = renderer->createTextureStorage2D(maxLevel, internalformat, renderTarget, width, height); mInstance = renderer->createTextureStorage2D(internalformat, renderTarget, width, height, levels);
mFirstRenderTargetSerial = gl::RenderbufferStorage::issueSerials(static_cast<GLuint>(mInstance->levelCount())); mFirstRenderTargetSerial = gl::RenderbufferStorage::issueSerials(static_cast<GLuint>(mInstance->getLevelCount()));
} }
TextureStorageInterface2D::~TextureStorageInterface2D() TextureStorageInterface2D::~TextureStorageInterface2D()
...@@ -94,10 +94,10 @@ unsigned int TextureStorageInterface2D::getRenderTargetSerial(GLint level) const ...@@ -94,10 +94,10 @@ unsigned int TextureStorageInterface2D::getRenderTargetSerial(GLint level) const
return mFirstRenderTargetSerial + level; return mFirstRenderTargetSerial + level;
} }
TextureStorageInterfaceCube::TextureStorageInterfaceCube(Renderer *renderer, int maxLevel, GLenum internalformat, bool renderTarget, int size) TextureStorageInterfaceCube::TextureStorageInterfaceCube(Renderer *renderer, GLenum internalformat, bool renderTarget, int size, int levels)
{ {
mInstance = renderer->createTextureStorageCube(maxLevel, internalformat, renderTarget, size); mInstance = renderer->createTextureStorageCube(internalformat, renderTarget, size, levels);
mFirstRenderTargetSerial = gl::RenderbufferStorage::issueSerials(static_cast<GLuint>(mInstance->levelCount() * 6)); mFirstRenderTargetSerial = gl::RenderbufferStorage::issueSerials(static_cast<GLuint>(mInstance->getLevelCount() * 6));
} }
TextureStorageInterfaceCube::~TextureStorageInterfaceCube() TextureStorageInterfaceCube::~TextureStorageInterfaceCube()
...@@ -119,12 +119,12 @@ unsigned int TextureStorageInterfaceCube::getRenderTargetSerial(GLenum target, G ...@@ -119,12 +119,12 @@ unsigned int TextureStorageInterfaceCube::getRenderTargetSerial(GLenum target, G
return mFirstRenderTargetSerial + (level * 6) + gl::TextureCubeMap::targetToIndex(target); return mFirstRenderTargetSerial + (level * 6) + gl::TextureCubeMap::targetToIndex(target);
} }
TextureStorageInterface3D::TextureStorageInterface3D(Renderer *renderer, int maxLevel, GLenum internalformat, bool renderTarget, TextureStorageInterface3D::TextureStorageInterface3D(Renderer *renderer, GLenum internalformat, bool renderTarget,
GLsizei width, GLsizei height, GLsizei depth) GLsizei width, GLsizei height, GLsizei depth, int levels)
{ {
mInstance = renderer->createTextureStorage3D(maxLevel, internalformat, renderTarget, width, height, depth); mInstance = renderer->createTextureStorage3D(internalformat, renderTarget, width, height, depth, levels);
mFirstRenderTargetSerial = gl::RenderbufferStorage::issueSerials(static_cast<GLuint>(mInstance->levelCount() * depth)); mFirstRenderTargetSerial = gl::RenderbufferStorage::issueSerials(static_cast<GLuint>(mInstance->getLevelCount() * depth));
} }
TextureStorageInterface3D::~TextureStorageInterface3D() TextureStorageInterface3D::~TextureStorageInterface3D()
...@@ -148,14 +148,14 @@ RenderTarget *TextureStorageInterface3D::getRenderTarget(GLint level, GLint laye ...@@ -148,14 +148,14 @@ RenderTarget *TextureStorageInterface3D::getRenderTarget(GLint level, GLint laye
unsigned int TextureStorageInterface3D::getRenderTargetSerial(GLint level, GLint layer) const unsigned int TextureStorageInterface3D::getRenderTargetSerial(GLint level, GLint layer) const
{ {
return mFirstRenderTargetSerial + static_cast<unsigned int>((layer * mInstance->levelCount()) + level); return mFirstRenderTargetSerial + static_cast<unsigned int>((layer * mInstance->getLevelCount()) + level);
} }
TextureStorageInterface2DArray::TextureStorageInterface2DArray(Renderer *renderer, int maxLevel, GLenum internalformat, bool renderTarget, TextureStorageInterface2DArray::TextureStorageInterface2DArray(Renderer *renderer, GLenum internalformat, bool renderTarget,
GLsizei width, GLsizei height, GLsizei depth) GLsizei width, GLsizei height, GLsizei depth, int levels)
{ {
mInstance = renderer->createTextureStorage2DArray(maxLevel, internalformat, renderTarget, width, height, depth); mInstance = renderer->createTextureStorage2DArray(internalformat, renderTarget, width, height, depth, levels);
mFirstRenderTargetSerial = gl::RenderbufferStorage::issueSerials(static_cast<GLuint>(mInstance->levelCount() * depth)); mFirstRenderTargetSerial = gl::RenderbufferStorage::issueSerials(static_cast<GLuint>(mInstance->getLevelCount() * depth));
} }
TextureStorageInterface2DArray::~TextureStorageInterface2DArray() TextureStorageInterface2DArray::~TextureStorageInterface2DArray()
...@@ -174,7 +174,7 @@ RenderTarget *TextureStorageInterface2DArray::getRenderTarget(GLint level, GLint ...@@ -174,7 +174,7 @@ RenderTarget *TextureStorageInterface2DArray::getRenderTarget(GLint level, GLint
unsigned int TextureStorageInterface2DArray::getRenderTargetSerial(GLint level, GLint layer) const unsigned int TextureStorageInterface2DArray::getRenderTargetSerial(GLint level, GLint layer) const
{ {
return mFirstRenderTargetSerial + static_cast<unsigned int>((layer * mInstance->levelCount()) + level); return mFirstRenderTargetSerial + static_cast<unsigned int>((layer * mInstance->getLevelCount()) + level);
} }
} }
...@@ -28,9 +28,7 @@ class TextureStorage ...@@ -28,9 +28,7 @@ class TextureStorage
virtual int getTopLevel() const = 0; virtual int getTopLevel() const = 0;
virtual bool isRenderTarget() const = 0; virtual bool isRenderTarget() const = 0;
virtual bool isManaged() const = 0; virtual bool isManaged() const = 0;
virtual int getMaxLevel() const = 0; virtual int getLevelCount() const = 0;
int levelCount() const { return getMaxLevel(); }
virtual RenderTarget *getRenderTarget(int level) = 0; virtual RenderTarget *getRenderTarget(int level) = 0;
virtual RenderTarget *getRenderTargetFace(GLenum faceTarget, int level) = 0; virtual RenderTarget *getRenderTargetFace(GLenum faceTarget, int level) = 0;
...@@ -56,7 +54,7 @@ class TextureStorageInterface ...@@ -56,7 +54,7 @@ class TextureStorageInterface
virtual int getTopLevel() const; virtual int getTopLevel() const;
virtual bool isRenderTarget() const; virtual bool isRenderTarget() const;
virtual bool isManaged() const; virtual bool isManaged() const;
virtual int getMaxLevel() const; virtual int getLevelCount() const;
protected: protected:
TextureStorage *mInstance; TextureStorage *mInstance;
...@@ -74,7 +72,7 @@ class TextureStorageInterface2D : public TextureStorageInterface ...@@ -74,7 +72,7 @@ class TextureStorageInterface2D : public TextureStorageInterface
{ {
public: public:
TextureStorageInterface2D(Renderer *renderer, SwapChain *swapchain); TextureStorageInterface2D(Renderer *renderer, SwapChain *swapchain);
TextureStorageInterface2D(Renderer *renderer, int maxLevel, GLenum internalformat, bool renderTarget, GLsizei width, GLsizei height); TextureStorageInterface2D(Renderer *renderer, GLenum internalformat, bool renderTarget, GLsizei width, GLsizei height, int levels);
virtual ~TextureStorageInterface2D(); virtual ~TextureStorageInterface2D();
void generateMipmap(int level); void generateMipmap(int level);
...@@ -91,7 +89,7 @@ class TextureStorageInterface2D : public TextureStorageInterface ...@@ -91,7 +89,7 @@ class TextureStorageInterface2D : public TextureStorageInterface
class TextureStorageInterfaceCube : public TextureStorageInterface class TextureStorageInterfaceCube : public TextureStorageInterface
{ {
public: public:
TextureStorageInterfaceCube(Renderer *renderer, int maxLevel, GLenum internalformat, bool renderTarget, int size); TextureStorageInterfaceCube(Renderer *renderer, GLenum internalformat, bool renderTarget, int size, int levels);
virtual ~TextureStorageInterfaceCube(); virtual ~TextureStorageInterfaceCube();
void generateMipmap(int faceIndex, int level); void generateMipmap(int faceIndex, int level);
...@@ -108,8 +106,8 @@ class TextureStorageInterfaceCube : public TextureStorageInterface ...@@ -108,8 +106,8 @@ class TextureStorageInterfaceCube : public TextureStorageInterface
class TextureStorageInterface3D : public TextureStorageInterface class TextureStorageInterface3D : public TextureStorageInterface
{ {
public: public:
TextureStorageInterface3D(Renderer *renderer, int maxLevel, GLenum internalformat, bool renderTarget, TextureStorageInterface3D(Renderer *renderer, GLenum internalformat, bool renderTarget,
GLsizei width, GLsizei height, GLsizei depth); GLsizei width, GLsizei height, GLsizei depth, int levels);
virtual ~TextureStorageInterface3D(); virtual ~TextureStorageInterface3D();
void generateMipmap(int level); void generateMipmap(int level);
...@@ -127,8 +125,8 @@ class TextureStorageInterface3D : public TextureStorageInterface ...@@ -127,8 +125,8 @@ class TextureStorageInterface3D : public TextureStorageInterface
class TextureStorageInterface2DArray : public TextureStorageInterface class TextureStorageInterface2DArray : public TextureStorageInterface
{ {
public: public:
TextureStorageInterface2DArray(Renderer *renderer, int maxLevel, GLenum internalformat, bool renderTarget, TextureStorageInterface2DArray(Renderer *renderer, GLenum internalformat, bool renderTarget,
GLsizei width, GLsizei height, GLsizei depth); GLsizei width, GLsizei height, GLsizei depth, int levels);
virtual ~TextureStorageInterface2DArray(); virtual ~TextureStorageInterface2DArray();
void generateMipmap(int level); void generateMipmap(int level);
......
...@@ -3295,24 +3295,24 @@ TextureStorage *Renderer11::createTextureStorage2D(SwapChain *swapChain) ...@@ -3295,24 +3295,24 @@ TextureStorage *Renderer11::createTextureStorage2D(SwapChain *swapChain)
return new TextureStorage11_2D(this, swapChain11); return new TextureStorage11_2D(this, swapChain11);
} }
TextureStorage *Renderer11::createTextureStorage2D(int maxLevel, GLenum internalformat, bool renderTarget, GLsizei width, GLsizei height) TextureStorage *Renderer11::createTextureStorage2D(GLenum internalformat, bool renderTarget, GLsizei width, GLsizei height, int levels)
{ {
return new TextureStorage11_2D(this, maxLevel, internalformat, renderTarget, width, height); return new TextureStorage11_2D(this, internalformat, renderTarget, width, height, levels);
} }
TextureStorage *Renderer11::createTextureStorageCube(int maxLevel, GLenum internalformat, bool renderTarget, int size) TextureStorage *Renderer11::createTextureStorageCube(GLenum internalformat, bool renderTarget, int size, int levels)
{ {
return new TextureStorage11_Cube(this, maxLevel, internalformat, renderTarget, size); return new TextureStorage11_Cube(this, internalformat, renderTarget, size, levels);
} }
TextureStorage *Renderer11::createTextureStorage3D(int maxLevel, GLenum internalformat, bool renderTarget, GLsizei width, GLsizei height, GLsizei depth) TextureStorage *Renderer11::createTextureStorage3D(GLenum internalformat, bool renderTarget, GLsizei width, GLsizei height, GLsizei depth, int levels)
{ {
return new TextureStorage11_3D(this, maxLevel, internalformat, renderTarget, width, height, depth); return new TextureStorage11_3D(this, internalformat, renderTarget, width, height, depth, levels);
} }
TextureStorage *Renderer11::createTextureStorage2DArray(int maxLevel, GLenum internalformat, bool renderTarget, GLsizei width, GLsizei height, GLsizei depth) TextureStorage *Renderer11::createTextureStorage2DArray(GLenum internalformat, bool renderTarget, GLsizei width, GLsizei height, GLsizei depth, int levels)
{ {
return new TextureStorage11_2DArray(this, maxLevel, internalformat, renderTarget, width, height, depth); return new TextureStorage11_2DArray(this, internalformat, renderTarget, width, height, depth, levels);
} }
void Renderer11::readTextureData(ID3D11Texture2D *texture, unsigned int subResource, const gl::Rectangle &area, void Renderer11::readTextureData(ID3D11Texture2D *texture, unsigned int subResource, const gl::Rectangle &area,
......
...@@ -202,10 +202,10 @@ class Renderer11 : public Renderer ...@@ -202,10 +202,10 @@ class Renderer11 : public Renderer
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(SwapChain *swapChain);
virtual TextureStorage *createTextureStorage2D(int maxLevel, GLenum internalformat, bool renderTarget, GLsizei width, GLsizei height); virtual TextureStorage *createTextureStorage2D(GLenum internalformat, bool renderTarget, GLsizei width, GLsizei height, int levels);
virtual TextureStorage *createTextureStorageCube(int maxLevel, GLenum internalformat, bool renderTarget, int size); virtual TextureStorage *createTextureStorageCube(GLenum internalformat, bool renderTarget, int size, int levels);
virtual TextureStorage *createTextureStorage3D(int maxLevel, GLenum internalformat, bool renderTarget, GLsizei width, GLsizei height, GLsizei depth); virtual TextureStorage *createTextureStorage3D(GLenum internalformat, bool renderTarget, GLsizei width, GLsizei height, GLsizei depth, int levels);
virtual TextureStorage *createTextureStorage2DArray(int maxLevel, GLenum internalformat, bool renderTarget, GLsizei width, GLsizei height, GLsizei depth); virtual TextureStorage *createTextureStorage2DArray(GLenum internalformat, bool renderTarget, GLsizei width, GLsizei height, GLsizei depth, int levels);
// Buffer creation // Buffer creation
virtual VertexBuffer *createVertexBuffer(); virtual VertexBuffer *createVertexBuffer();
......
...@@ -44,7 +44,7 @@ class TextureStorage11 : public TextureStorage ...@@ -44,7 +44,7 @@ class TextureStorage11 : public TextureStorage
virtual int getTopLevel() const; virtual int getTopLevel() const;
virtual bool isRenderTarget() const; virtual bool isRenderTarget() const;
virtual bool isManaged() const; virtual bool isManaged() const;
virtual int getMaxLevel() const; virtual int getLevelCount() const;
UINT getSubresourceIndex(int mipLevel, int layerTarget) const; UINT getSubresourceIndex(int mipLevel, int layerTarget) const;
void generateSwizzles(GLenum swizzleRed, GLenum swizzleGreen, GLenum swizzleBlue, GLenum swizzleAlpha); void generateSwizzles(GLenum swizzleRed, GLenum swizzleGreen, GLenum swizzleBlue, GLenum swizzleAlpha);
...@@ -109,7 +109,7 @@ class TextureStorage11_2D : public TextureStorage11 ...@@ -109,7 +109,7 @@ class TextureStorage11_2D : public TextureStorage11
{ {
public: public:
TextureStorage11_2D(Renderer *renderer, SwapChain11 *swapchain); TextureStorage11_2D(Renderer *renderer, SwapChain11 *swapchain);
TextureStorage11_2D(Renderer *renderer, int maxLevel, GLenum internalformat, bool renderTarget, GLsizei width, GLsizei height); TextureStorage11_2D(Renderer *renderer, GLenum internalformat, bool renderTarget, GLsizei width, GLsizei height, int levels);
virtual ~TextureStorage11_2D(); virtual ~TextureStorage11_2D();
static TextureStorage11_2D *makeTextureStorage11_2D(TextureStorage *storage); static TextureStorage11_2D *makeTextureStorage11_2D(TextureStorage *storage);
...@@ -144,7 +144,7 @@ class TextureStorage11_2D : public TextureStorage11 ...@@ -144,7 +144,7 @@ class TextureStorage11_2D : public TextureStorage11
class TextureStorage11_Cube : public TextureStorage11 class TextureStorage11_Cube : public TextureStorage11
{ {
public: public:
TextureStorage11_Cube(Renderer *renderer, int maxLevel, GLenum internalformat, bool renderTarget, int size); TextureStorage11_Cube(Renderer *renderer, GLenum internalformat, bool renderTarget, int size, int levels);
virtual ~TextureStorage11_Cube(); virtual ~TextureStorage11_Cube();
static TextureStorage11_Cube *makeTextureStorage11_Cube(TextureStorage *storage); static TextureStorage11_Cube *makeTextureStorage11_Cube(TextureStorage *storage);
...@@ -179,8 +179,8 @@ class TextureStorage11_Cube : public TextureStorage11 ...@@ -179,8 +179,8 @@ class TextureStorage11_Cube : public TextureStorage11
class TextureStorage11_3D : public TextureStorage11 class TextureStorage11_3D : public TextureStorage11
{ {
public: public:
TextureStorage11_3D(Renderer *renderer, int maxLevel, GLenum internalformat, bool renderTarget, TextureStorage11_3D(Renderer *renderer, GLenum internalformat, bool renderTarget,
GLsizei width, GLsizei height, GLsizei depth); GLsizei width, GLsizei height, GLsizei depth, int levels);
virtual ~TextureStorage11_3D(); virtual ~TextureStorage11_3D();
static TextureStorage11_3D *makeTextureStorage11_3D(TextureStorage *storage); static TextureStorage11_3D *makeTextureStorage11_3D(TextureStorage *storage);
...@@ -220,8 +220,8 @@ class TextureStorage11_3D : public TextureStorage11 ...@@ -220,8 +220,8 @@ class TextureStorage11_3D : public TextureStorage11
class TextureStorage11_2DArray : public TextureStorage11 class TextureStorage11_2DArray : public TextureStorage11
{ {
public: public:
TextureStorage11_2DArray(Renderer *renderer, int maxLevel, GLenum internalformat, bool renderTarget, TextureStorage11_2DArray(Renderer *renderer, GLenum internalformat, bool renderTarget,
GLsizei width, GLsizei height, GLsizei depth); GLsizei width, GLsizei height, GLsizei depth, int levels);
virtual ~TextureStorage11_2DArray(); virtual ~TextureStorage11_2DArray();
static TextureStorage11_2DArray *makeTextureStorage11_2DArray(TextureStorage *storage); static TextureStorage11_2DArray *makeTextureStorage11_2DArray(TextureStorage *storage);
......
...@@ -2805,7 +2805,7 @@ bool Renderer9::copyToRenderTarget(TextureStorageInterface2D *dest, TextureStora ...@@ -2805,7 +2805,7 @@ bool Renderer9::copyToRenderTarget(TextureStorageInterface2D *dest, TextureStora
TextureStorage9_2D *source9 = TextureStorage9_2D::makeTextureStorage9_2D(source->getStorageInstance()); TextureStorage9_2D *source9 = TextureStorage9_2D::makeTextureStorage9_2D(source->getStorageInstance());
TextureStorage9_2D *dest9 = TextureStorage9_2D::makeTextureStorage9_2D(dest->getStorageInstance()); TextureStorage9_2D *dest9 = TextureStorage9_2D::makeTextureStorage9_2D(dest->getStorageInstance());
int levels = source9->getMaxLevel(); int levels = source9->getLevelCount();
for (int i = 0; i < levels; ++i) for (int i = 0; i < levels; ++i)
{ {
IDirect3DSurface9 *srcSurf = source9->getSurfaceLevel(i, false); IDirect3DSurface9 *srcSurf = source9->getSurfaceLevel(i, false);
...@@ -2834,7 +2834,7 @@ bool Renderer9::copyToRenderTarget(TextureStorageInterfaceCube *dest, TextureSto ...@@ -2834,7 +2834,7 @@ bool Renderer9::copyToRenderTarget(TextureStorageInterfaceCube *dest, TextureSto
{ {
TextureStorage9_Cube *source9 = TextureStorage9_Cube::makeTextureStorage9_Cube(source->getStorageInstance()); TextureStorage9_Cube *source9 = TextureStorage9_Cube::makeTextureStorage9_Cube(source->getStorageInstance());
TextureStorage9_Cube *dest9 = TextureStorage9_Cube::makeTextureStorage9_Cube(dest->getStorageInstance()); TextureStorage9_Cube *dest9 = TextureStorage9_Cube::makeTextureStorage9_Cube(dest->getStorageInstance());
int levels = source9->getMaxLevel(); int levels = source9->getLevelCount();
for (int f = 0; f < 6; f++) for (int f = 0; f < 6; f++)
{ {
for (int i = 0; i < levels; i++) for (int i = 0; i < levels; i++)
...@@ -3480,17 +3480,17 @@ TextureStorage *Renderer9::createTextureStorage2D(SwapChain *swapChain) ...@@ -3480,17 +3480,17 @@ TextureStorage *Renderer9::createTextureStorage2D(SwapChain *swapChain)
return new TextureStorage9_2D(this, swapChain9); return new TextureStorage9_2D(this, swapChain9);
} }
TextureStorage *Renderer9::createTextureStorage2D(int maxLevel, GLenum internalformat, bool renderTarget, GLsizei width, GLsizei height) TextureStorage *Renderer9::createTextureStorage2D(GLenum internalformat, bool renderTarget, GLsizei width, GLsizei height, int levels)
{ {
return new TextureStorage9_2D(this, maxLevel, internalformat, renderTarget, width, height); return new TextureStorage9_2D(this, internalformat, renderTarget, width, height, levels);
} }
TextureStorage *Renderer9::createTextureStorageCube(int maxLevel, GLenum internalformat, bool renderTarget, int size) TextureStorage *Renderer9::createTextureStorageCube(GLenum internalformat, bool renderTarget, int size, int levels)
{ {
return new TextureStorage9_Cube(this, maxLevel, internalformat, renderTarget, size); return new TextureStorage9_Cube(this, internalformat, renderTarget, size, levels);
} }
TextureStorage *Renderer9::createTextureStorage3D(int maxLevel, GLenum internalformat, bool renderTarget, GLsizei width, GLsizei height, GLsizei depth) TextureStorage *Renderer9::createTextureStorage3D(GLenum internalformat, bool renderTarget, GLsizei width, GLsizei height, GLsizei depth, int levels)
{ {
// 3D textures are not supported by the D3D9 backend. // 3D textures are not supported by the D3D9 backend.
UNREACHABLE(); UNREACHABLE();
...@@ -3498,7 +3498,7 @@ TextureStorage *Renderer9::createTextureStorage3D(int maxLevel, GLenum internalf ...@@ -3498,7 +3498,7 @@ TextureStorage *Renderer9::createTextureStorage3D(int maxLevel, GLenum internalf
return NULL; return NULL;
} }
TextureStorage *Renderer9::createTextureStorage2DArray(int maxLevel, GLenum internalformat, bool renderTarget, GLsizei width, GLsizei height, GLsizei depth) TextureStorage *Renderer9::createTextureStorage2DArray(GLenum internalformat, bool renderTarget, GLsizei width, GLsizei height, GLsizei depth, int levels)
{ {
// 2D array textures are not supported by the D3D9 backend. // 2D array textures are not supported by the D3D9 backend.
UNREACHABLE(); UNREACHABLE();
......
...@@ -207,10 +207,10 @@ class Renderer9 : public Renderer ...@@ -207,10 +207,10 @@ class Renderer9 : public Renderer
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(SwapChain *swapChain);
virtual TextureStorage *createTextureStorage2D(int maxLevel, GLenum internalformat, bool renderTarget, GLsizei width, GLsizei height); virtual TextureStorage *createTextureStorage2D(GLenum internalformat, bool renderTarget, GLsizei width, GLsizei height, int levels);
virtual TextureStorage *createTextureStorageCube(int maxLevel, GLenum internalformat, bool renderTarget, int size); virtual TextureStorage *createTextureStorageCube(GLenum internalformat, bool renderTarget, int size, int levels);
virtual TextureStorage *createTextureStorage3D(int maxLevel, GLenum internalformat, bool renderTarget, GLsizei width, GLsizei height, GLsizei depth); virtual TextureStorage *createTextureStorage3D(GLenum internalformat, bool renderTarget, GLsizei width, GLsizei height, GLsizei depth, int levels);
virtual TextureStorage *createTextureStorage2DArray(int maxLevel, GLenum internalformat, bool renderTarget, GLsizei width, GLsizei height, GLsizei depth); virtual TextureStorage *createTextureStorage2DArray(GLenum internalformat, bool renderTarget, GLsizei width, GLsizei height, GLsizei depth, int levels);
// Buffer creation // Buffer creation
virtual VertexBuffer *createVertexBuffer(); virtual VertexBuffer *createVertexBuffer();
......
...@@ -83,7 +83,7 @@ int TextureStorage9::getTopLevel() const ...@@ -83,7 +83,7 @@ int TextureStorage9::getTopLevel() const
return mTopLevel; return mTopLevel;
} }
int TextureStorage9::getMaxLevel() const int TextureStorage9::getLevelCount() const
{ {
return getBaseTexture() ? (getBaseTexture()->GetLevelCount() - getTopLevel()) : 0; return getBaseTexture() ? (getBaseTexture()->GetLevelCount() - getTopLevel()) : 0;
} }
...@@ -98,7 +98,7 @@ TextureStorage9_2D::TextureStorage9_2D(Renderer *renderer, SwapChain9 *swapchain ...@@ -98,7 +98,7 @@ TextureStorage9_2D::TextureStorage9_2D(Renderer *renderer, SwapChain9 *swapchain
initializeRenderTarget(); initializeRenderTarget();
} }
TextureStorage9_2D::TextureStorage9_2D(Renderer *renderer, int maxLevel, GLenum internalformat, bool renderTarget, GLsizei width, GLsizei height) TextureStorage9_2D::TextureStorage9_2D(Renderer *renderer, GLenum internalformat, bool renderTarget, GLsizei width, GLsizei height, int levels)
: TextureStorage9(renderer, GetTextureUsage(internalformat, Renderer9::makeRenderer9(renderer), renderTarget)) : TextureStorage9(renderer, GetTextureUsage(internalformat, Renderer9::makeRenderer9(renderer), renderTarget))
{ {
mTexture = NULL; mTexture = NULL;
...@@ -110,7 +110,7 @@ TextureStorage9_2D::TextureStorage9_2D(Renderer *renderer, int maxLevel, GLenum ...@@ -110,7 +110,7 @@ TextureStorage9_2D::TextureStorage9_2D(Renderer *renderer, int maxLevel, GLenum
IDirect3DDevice9 *device = mRenderer->getDevice(); IDirect3DDevice9 *device = mRenderer->getDevice();
D3DFORMAT format = gl_d3d9::GetTextureFormat(internalformat, mRenderer); D3DFORMAT format = gl_d3d9::GetTextureFormat(internalformat, mRenderer);
d3d9::MakeValidSize(false, format, &width, &height, &mTopLevel); d3d9::MakeValidSize(false, format, &width, &height, &mTopLevel);
UINT creationLevels = (maxLevel ? maxLevel + mTopLevel : 0); UINT creationLevels = (levels == 0) ? 0 : mTopLevel + levels;
HRESULT result = device->CreateTexture(width, height, creationLevels, getUsage(), format, getPool(), &mTexture, NULL); HRESULT result = device->CreateTexture(width, height, creationLevels, getUsage(), format, getPool(), &mTexture, NULL);
...@@ -193,7 +193,7 @@ void TextureStorage9_2D::initializeRenderTarget() ...@@ -193,7 +193,7 @@ void TextureStorage9_2D::initializeRenderTarget()
} }
} }
TextureStorage9_Cube::TextureStorage9_Cube(Renderer *renderer, int maxLevel, GLenum internalformat, bool renderTarget, int size) TextureStorage9_Cube::TextureStorage9_Cube(Renderer *renderer, GLenum internalformat, bool renderTarget, int size, int levels)
: TextureStorage9(renderer, GetTextureUsage(internalformat, Renderer9::makeRenderer9(renderer), renderTarget)) : TextureStorage9(renderer, GetTextureUsage(internalformat, Renderer9::makeRenderer9(renderer), renderTarget))
{ {
mTexture = NULL; mTexture = NULL;
...@@ -210,7 +210,7 @@ TextureStorage9_Cube::TextureStorage9_Cube(Renderer *renderer, int maxLevel, GLe ...@@ -210,7 +210,7 @@ TextureStorage9_Cube::TextureStorage9_Cube(Renderer *renderer, int maxLevel, GLe
int height = size; int height = size;
D3DFORMAT format = gl_d3d9::GetTextureFormat(internalformat, mRenderer); D3DFORMAT format = gl_d3d9::GetTextureFormat(internalformat, mRenderer);
d3d9::MakeValidSize(false, format, &size, &height, &mTopLevel); d3d9::MakeValidSize(false, format, &size, &height, &mTopLevel);
UINT creationLevels = (maxLevel ? maxLevel + mTopLevel : 0); UINT creationLevels = (levels == 0) ? 0 : mTopLevel + levels;
HRESULT result = device->CreateCubeTexture(size, creationLevels, getUsage(), format, getPool(), &mTexture, NULL); HRESULT result = device->CreateCubeTexture(size, creationLevels, getUsage(), format, getPool(), &mTexture, NULL);
......
...@@ -43,7 +43,7 @@ class TextureStorage9 : public TextureStorage ...@@ -43,7 +43,7 @@ class TextureStorage9 : public TextureStorage
virtual int getTopLevel() const; virtual int getTopLevel() const;
virtual bool isRenderTarget() const; virtual bool isRenderTarget() const;
virtual bool isManaged() const; virtual bool isManaged() const;
virtual int getMaxLevel() const; virtual int getLevelCount() const;
protected: protected:
int mTopLevel; int mTopLevel;
...@@ -62,7 +62,7 @@ class TextureStorage9_2D : public TextureStorage9 ...@@ -62,7 +62,7 @@ class TextureStorage9_2D : public TextureStorage9
{ {
public: public:
TextureStorage9_2D(Renderer *renderer, SwapChain9 *swapchain); TextureStorage9_2D(Renderer *renderer, SwapChain9 *swapchain);
TextureStorage9_2D(Renderer *renderer, int maxLevel, GLenum internalformat, bool renderTarget, GLsizei width, GLsizei height); TextureStorage9_2D(Renderer *renderer, GLenum internalformat, bool renderTarget, GLsizei width, GLsizei height, int levels);
virtual ~TextureStorage9_2D(); virtual ~TextureStorage9_2D();
static TextureStorage9_2D *makeTextureStorage9_2D(TextureStorage *storage); static TextureStorage9_2D *makeTextureStorage9_2D(TextureStorage *storage);
...@@ -84,7 +84,7 @@ class TextureStorage9_2D : public TextureStorage9 ...@@ -84,7 +84,7 @@ class TextureStorage9_2D : public TextureStorage9
class TextureStorage9_Cube : public TextureStorage9 class TextureStorage9_Cube : public TextureStorage9
{ {
public: public:
TextureStorage9_Cube(Renderer *renderer, int maxLevel, GLenum internalformat, bool renderTarget, int size); TextureStorage9_Cube(Renderer *renderer, GLenum internalformat, bool renderTarget, int size, int levels);
virtual ~TextureStorage9_Cube(); virtual ~TextureStorage9_Cube();
static TextureStorage9_Cube *makeTextureStorage9_Cube(TextureStorage *storage); static TextureStorage9_Cube *makeTextureStorage9_Cube(TextureStorage *storage);
......
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