Commit 3269bcb4 by Jamie Madill

More TextureD3D cleanups.

The getLayers method was redundant, and the getBaseLevelImage method we can replace with a shared TextureD3D method rather than a specialized method for each type. BUG=angle:729 Change-Id: I80c94a765dbc369fb0bb60ec8273e9e3ba6ffeed Reviewed-on: https://chromium-review.googlesource.com/219862Tested-by: 's avatarJamie Madill <jmadill@chromium.org> Reviewed-by: 's avatarGeoff Lang <geofflang@chromium.org>
parent 135570a4
...@@ -247,6 +247,11 @@ TextureStorage *TextureD3D::getStorage() ...@@ -247,6 +247,11 @@ TextureStorage *TextureD3D::getStorage()
return mTexStorage; return mTexStorage;
} }
Image *TextureD3D::getBaseLevelImage() const
{
return getImage(getImageIndex(0, 0));
}
void TextureD3D::generateMipmaps() void TextureD3D::generateMipmaps()
{ {
// Set up proper image sizes. // Set up proper image sizes.
...@@ -286,7 +291,7 @@ void TextureD3D::generateMipmaps() ...@@ -286,7 +291,7 @@ void TextureD3D::generateMipmaps()
bool TextureD3D::isBaseImageZeroSize() const bool TextureD3D::isBaseImageZeroSize() const
{ {
Image *baseImage = getImage(getImageIndex(0, 0)); Image *baseImage = getBaseLevelImage();
if (!baseImage || baseImage->getWidth() <= 0) if (!baseImage || baseImage->getWidth() <= 0)
{ {
...@@ -809,11 +814,6 @@ void TextureD3D_2D::updateStorage() ...@@ -809,11 +814,6 @@ void TextureD3D_2D::updateStorage()
} }
} }
const ImageD3D *TextureD3D_2D::getBaseLevelImage() const
{
return mImageArray[0];
}
void TextureD3D_2D::updateStorageLevel(int level) void TextureD3D_2D::updateStorageLevel(int level)
{ {
ASSERT(level <= (int)ArraySize(mImageArray) && mImageArray[level] != NULL); ASSERT(level <= (int)ArraySize(mImageArray) && mImageArray[level] != NULL);
...@@ -1255,13 +1255,6 @@ void TextureD3D_Cube::updateStorage() ...@@ -1255,13 +1255,6 @@ void TextureD3D_Cube::updateStorage()
} }
} }
const ImageD3D *TextureD3D_Cube::getBaseLevelImage() const
{
// Note: if we are not cube-complete, there is no single base level image that can describe all
// cube faces, so this method is only well-defined for a cube-complete base level.
return mImageArray[0][0];
}
bool TextureD3D_Cube::isValidFaceLevel(int faceIndex, int level) const bool TextureD3D_Cube::isValidFaceLevel(int faceIndex, int level) const
{ {
return (mTexStorage ? (level >= 0 && level < mTexStorage->getLevelCount()) : 0); return (mTexStorage ? (level >= 0 && level < mTexStorage->getLevelCount()) : 0);
...@@ -1763,11 +1756,6 @@ void TextureD3D_3D::updateStorage() ...@@ -1763,11 +1756,6 @@ void TextureD3D_3D::updateStorage()
} }
} }
const ImageD3D *TextureD3D_3D::getBaseLevelImage() const
{
return mImageArray[0];
}
bool TextureD3D_3D::isValidLevel(int level) const bool TextureD3D_3D::isValidLevel(int level) const
{ {
return (mTexStorage ? (level >= 0 && level < mTexStorage->getLevelCount()) : 0); return (mTexStorage ? (level >= 0 && level < mTexStorage->getLevelCount()) : 0);
...@@ -1942,11 +1930,6 @@ GLsizei TextureD3D_2DArray::getHeight(GLint level) const ...@@ -1942,11 +1930,6 @@ GLsizei TextureD3D_2DArray::getHeight(GLint level) const
return (level < gl::IMPLEMENTATION_MAX_TEXTURE_LEVELS && mLayerCounts[level] > 0) ? mImageArray[level][0]->getHeight() : 0; return (level < gl::IMPLEMENTATION_MAX_TEXTURE_LEVELS && mLayerCounts[level] > 0) ? mImageArray[level][0]->getHeight() : 0;
} }
GLsizei TextureD3D_2DArray::getLayers(GLint level) const
{
return (level < gl::IMPLEMENTATION_MAX_TEXTURE_LEVELS) ? mLayerCounts[level] : 0;
}
GLenum TextureD3D_2DArray::getInternalFormat(GLint level) const GLenum TextureD3D_2DArray::getInternalFormat(GLint level) const
{ {
return (level < gl::IMPLEMENTATION_MAX_TEXTURE_LEVELS && mLayerCounts[level] > 0) ? mImageArray[level][0]->getInternalFormat() : GL_NONE; return (level < gl::IMPLEMENTATION_MAX_TEXTURE_LEVELS && mLayerCounts[level] > 0) ? mImageArray[level][0]->getInternalFormat() : GL_NONE;
...@@ -2212,7 +2195,7 @@ TextureStorage *TextureD3D_2DArray::createCompleteStorage(bool renderTarget) con ...@@ -2212,7 +2195,7 @@ TextureStorage *TextureD3D_2DArray::createCompleteStorage(bool renderTarget) con
{ {
GLsizei width = getBaseLevelWidth(); GLsizei width = getBaseLevelWidth();
GLsizei height = getBaseLevelHeight(); GLsizei height = getBaseLevelHeight();
GLsizei depth = getLayers(0); GLsizei depth = getLayerCount(0);
GLenum internalFormat = getBaseLevelInternalFormat(); GLenum internalFormat = getBaseLevelInternalFormat();
ASSERT(width > 0 && height > 0 && depth > 0); ASSERT(width > 0 && height > 0 && depth > 0);
...@@ -2246,11 +2229,6 @@ void TextureD3D_2DArray::updateStorage() ...@@ -2246,11 +2229,6 @@ void TextureD3D_2DArray::updateStorage()
} }
} }
const ImageD3D *TextureD3D_2DArray::getBaseLevelImage() const
{
return (mLayerCounts[0] > 0 ? mImageArray[0][0] : NULL);
}
bool TextureD3D_2DArray::isValidLevel(int level) const bool TextureD3D_2DArray::isValidLevel(int level) const
{ {
return (mTexStorage ? (level >= 0 && level < mTexStorage->getLevelCount()) : 0); return (mTexStorage ? (level >= 0 && level < mTexStorage->getLevelCount()) : 0);
...@@ -2267,7 +2245,7 @@ bool TextureD3D_2DArray::isLevelComplete(int level) const ...@@ -2267,7 +2245,7 @@ bool TextureD3D_2DArray::isLevelComplete(int level) const
GLsizei width = getBaseLevelWidth(); GLsizei width = getBaseLevelWidth();
GLsizei height = getBaseLevelHeight(); GLsizei height = getBaseLevelHeight();
GLsizei layers = getLayers(0); GLsizei layers = getLayerCount(0);
if (width <= 0 || height <= 0 || layers <= 0) if (width <= 0 || height <= 0 || layers <= 0)
{ {
...@@ -2294,7 +2272,7 @@ bool TextureD3D_2DArray::isLevelComplete(int level) const ...@@ -2294,7 +2272,7 @@ bool TextureD3D_2DArray::isLevelComplete(int level) const
return false; return false;
} }
if (getLayers(level) != layers) if (getLayerCount(level) != layers)
{ {
return false; return false;
} }
...@@ -2336,7 +2314,7 @@ void TextureD3D_2DArray::redefineImage(GLint level, GLenum internalformat, GLsiz ...@@ -2336,7 +2314,7 @@ void TextureD3D_2DArray::redefineImage(GLint level, GLenum internalformat, GLsiz
// If there currently is a corresponding storage texture image, it has these parameters // If there currently is a corresponding storage texture image, it has these parameters
const int storageWidth = std::max(1, getBaseLevelWidth() >> level); const int storageWidth = std::max(1, getBaseLevelWidth() >> level);
const int storageHeight = std::max(1, getBaseLevelHeight() >> level); const int storageHeight = std::max(1, getBaseLevelHeight() >> level);
const int storageDepth = getLayers(0); const int storageDepth = getLayerCount(0);
const GLenum storageFormat = getBaseLevelInternalFormat(); const GLenum storageFormat = getBaseLevelInternalFormat();
for (int layer = 0; layer < mLayerCounts[level]; layer++) for (int layer = 0; layer < mLayerCounts[level]; layer++)
...@@ -2385,7 +2363,7 @@ void TextureD3D_2DArray::redefineImage(GLint level, GLenum internalformat, GLsiz ...@@ -2385,7 +2363,7 @@ void TextureD3D_2DArray::redefineImage(GLint level, GLenum internalformat, GLsiz
gl::Error TextureD3D_2DArray::commitRect(GLint level, GLint xoffset, GLint yoffset, GLint layerTarget, GLsizei width, GLsizei height) gl::Error TextureD3D_2DArray::commitRect(GLint level, GLint xoffset, GLint yoffset, GLint layerTarget, GLsizei width, GLsizei height)
{ {
if (isValidLevel(level) && layerTarget < getLayers(level)) if (isValidLevel(level) && layerTarget < getLayerCount(level))
{ {
ImageD3D *image = mImageArray[level][layerTarget]; ImageD3D *image = mImageArray[level][layerTarget];
gl::Error error = image->copyToStorage2DArray(mTexStorage, level, xoffset, yoffset, layerTarget, width, height); gl::Error error = image->copyToStorage2DArray(mTexStorage, level, xoffset, yoffset, layerTarget, width, height);
......
...@@ -60,6 +60,7 @@ class TextureD3D : public TextureImpl ...@@ -60,6 +60,7 @@ class TextureD3D : public TextureImpl
virtual void generateMipmaps(); virtual void generateMipmaps();
TextureStorage *getStorage(); TextureStorage *getStorage();
Image *getBaseLevelImage() const;
protected: protected:
gl::Error setImage(const gl::PixelUnpackState &unpack, GLenum type, const void *pixels, Image *image); gl::Error setImage(const gl::PixelUnpackState &unpack, GLenum type, const void *pixels, Image *image);
...@@ -97,7 +98,6 @@ class TextureD3D : public TextureImpl ...@@ -97,7 +98,6 @@ class TextureD3D : public TextureImpl
virtual void initializeStorage(bool renderTarget) = 0; virtual void initializeStorage(bool renderTarget) = 0;
virtual void updateStorage() = 0; virtual void updateStorage() = 0;
virtual const ImageD3D *getBaseLevelImage() const = 0;
}; };
class TextureD3D_2D : public TextureD3D class TextureD3D_2D : public TextureD3D
...@@ -141,7 +141,6 @@ class TextureD3D_2D : public TextureD3D ...@@ -141,7 +141,6 @@ class TextureD3D_2D : public TextureD3D
virtual void setCompleteTexStorage(TextureStorage *newCompleteTexStorage); virtual void setCompleteTexStorage(TextureStorage *newCompleteTexStorage);
virtual void updateStorage(); virtual void updateStorage();
virtual const ImageD3D *getBaseLevelImage() const;
virtual void initMipmapsImages(); virtual void initMipmapsImages();
bool isValidLevel(int level) const; bool isValidLevel(int level) const;
...@@ -197,7 +196,6 @@ class TextureD3D_Cube : public TextureD3D ...@@ -197,7 +196,6 @@ class TextureD3D_Cube : public TextureD3D
virtual void setCompleteTexStorage(TextureStorage *newCompleteTexStorage); virtual void setCompleteTexStorage(TextureStorage *newCompleteTexStorage);
virtual void updateStorage(); virtual void updateStorage();
virtual const ImageD3D *getBaseLevelImage() const;
virtual void initMipmapsImages(); virtual void initMipmapsImages();
bool isValidFaceLevel(int faceIndex, int level) const; bool isValidFaceLevel(int faceIndex, int level) const;
...@@ -252,7 +250,6 @@ class TextureD3D_3D : public TextureD3D ...@@ -252,7 +250,6 @@ class TextureD3D_3D : public TextureD3D
virtual void setCompleteTexStorage(TextureStorage *newCompleteTexStorage); virtual void setCompleteTexStorage(TextureStorage *newCompleteTexStorage);
virtual void updateStorage(); virtual void updateStorage();
virtual const ImageD3D *getBaseLevelImage() const;
virtual void initMipmapsImages(); virtual void initMipmapsImages();
bool isValidLevel(int level) const; bool isValidLevel(int level) const;
...@@ -277,7 +274,6 @@ class TextureD3D_2DArray : public TextureD3D ...@@ -277,7 +274,6 @@ class TextureD3D_2DArray : public TextureD3D
GLsizei getWidth(GLint level) const; GLsizei getWidth(GLint level) const;
GLsizei getHeight(GLint level) const; GLsizei getHeight(GLint level) const;
GLsizei getLayers(GLint level) const;
GLenum getInternalFormat(GLint level) const; GLenum getInternalFormat(GLint level) const;
bool isDepth(GLint level) const; bool isDepth(GLint level) const;
...@@ -306,7 +302,6 @@ class TextureD3D_2DArray : public TextureD3D ...@@ -306,7 +302,6 @@ class TextureD3D_2DArray : public TextureD3D
virtual void setCompleteTexStorage(TextureStorage *newCompleteTexStorage); virtual void setCompleteTexStorage(TextureStorage *newCompleteTexStorage);
virtual void updateStorage(); virtual void updateStorage();
virtual const ImageD3D *getBaseLevelImage() const;
virtual void initMipmapsImages(); virtual void initMipmapsImages();
bool isValidLevel(int level) const; bool isValidLevel(int level) const;
......
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