Commit 2db197cd by Jamie Madill

Use a consistent naming scheme for the cube map face index variables in Texture.cpp.

TRAC #23961 Signed-off-by: Shannon Woods Signed-off-by: Geoff Lang
parent d4589c97
...@@ -1026,7 +1026,7 @@ TextureCubeMap::~TextureCubeMap() ...@@ -1026,7 +1026,7 @@ TextureCubeMap::~TextureCubeMap()
GLsizei TextureCubeMap::getWidth(GLenum target, GLint level) const GLsizei TextureCubeMap::getWidth(GLenum target, GLint level) const
{ {
if (level < IMPLEMENTATION_MAX_TEXTURE_LEVELS) if (level < IMPLEMENTATION_MAX_TEXTURE_LEVELS)
return mImageArray[faceIndex(target)][level]->getWidth(); return mImageArray[targetToIndex(target)][level]->getWidth();
else else
return 0; return 0;
} }
...@@ -1034,7 +1034,7 @@ GLsizei TextureCubeMap::getWidth(GLenum target, GLint level) const ...@@ -1034,7 +1034,7 @@ GLsizei TextureCubeMap::getWidth(GLenum target, GLint level) const
GLsizei TextureCubeMap::getHeight(GLenum target, GLint level) const GLsizei TextureCubeMap::getHeight(GLenum target, GLint level) const
{ {
if (level < IMPLEMENTATION_MAX_TEXTURE_LEVELS) if (level < IMPLEMENTATION_MAX_TEXTURE_LEVELS)
return mImageArray[faceIndex(target)][level]->getHeight(); return mImageArray[targetToIndex(target)][level]->getHeight();
else else
return 0; return 0;
} }
...@@ -1042,7 +1042,7 @@ GLsizei TextureCubeMap::getHeight(GLenum target, GLint level) const ...@@ -1042,7 +1042,7 @@ GLsizei TextureCubeMap::getHeight(GLenum target, GLint level) const
GLenum TextureCubeMap::getInternalFormat(GLenum target, GLint level) const GLenum TextureCubeMap::getInternalFormat(GLenum target, GLint level) const
{ {
if (level < IMPLEMENTATION_MAX_TEXTURE_LEVELS) if (level < IMPLEMENTATION_MAX_TEXTURE_LEVELS)
return mImageArray[faceIndex(target)][level]->getInternalFormat(); return mImageArray[targetToIndex(target)][level]->getInternalFormat();
else else
return GL_NONE; return GL_NONE;
} }
...@@ -1050,7 +1050,7 @@ GLenum TextureCubeMap::getInternalFormat(GLenum target, GLint level) const ...@@ -1050,7 +1050,7 @@ GLenum TextureCubeMap::getInternalFormat(GLenum target, GLint level) const
GLenum TextureCubeMap::getActualFormat(GLenum target, GLint level) const GLenum TextureCubeMap::getActualFormat(GLenum target, GLint level) const
{ {
if (level < IMPLEMENTATION_MAX_TEXTURE_LEVELS) if (level < IMPLEMENTATION_MAX_TEXTURE_LEVELS)
return mImageArray[faceIndex(target)][level]->getActualFormat(); return mImageArray[targetToIndex(target)][level]->getActualFormat();
else else
return D3DFMT_UNKNOWN; return D3DFMT_UNKNOWN;
} }
...@@ -1085,37 +1085,40 @@ void TextureCubeMap::setImageNegZ(GLint level, GLsizei width, GLsizei height, GL ...@@ -1085,37 +1085,40 @@ void TextureCubeMap::setImageNegZ(GLint level, GLsizei width, GLsizei height, GL
setImage(5, level, width, height, internalFormat, format, type, unpack, pixels); setImage(5, level, width, height, internalFormat, format, type, unpack, pixels);
} }
void TextureCubeMap::setCompressedImage(GLenum face, GLint level, GLenum format, GLsizei width, GLsizei height, GLsizei imageSize, const void *pixels) void TextureCubeMap::setCompressedImage(GLenum target, GLint level, GLenum format, GLsizei width, GLsizei height, GLsizei imageSize, const void *pixels)
{ {
// compressed formats don't have separate sized internal formats-- we can just use the compressed format directly // compressed formats don't have separate sized internal formats-- we can just use the compressed format directly
redefineImage(faceIndex(face), level, format, width, height); int faceIndex = targetToIndex(target);
redefineImage(faceIndex, level, format, width, height);
Texture::setCompressedImage(imageSize, pixels, mImageArray[faceIndex(face)][level]); Texture::setCompressedImage(imageSize, pixels, mImageArray[faceIndex][level]);
} }
void TextureCubeMap::commitRect(int face, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height) void TextureCubeMap::commitRect(int faceIndex, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height)
{ {
if (level < levelCount()) if (level < levelCount())
{ {
rx::Image *image = mImageArray[face][level]; rx::Image *image = mImageArray[faceIndex][level];
if (image->updateSurface(mTexStorage, face, level, xoffset, yoffset, width, height)) if (image->updateSurface(mTexStorage, faceIndex, level, xoffset, yoffset, width, height))
image->markClean(); image->markClean();
} }
} }
void TextureCubeMap::subImage(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const PixelUnpackState &unpack, const void *pixels) void TextureCubeMap::subImage(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const PixelUnpackState &unpack, const void *pixels)
{ {
if (Texture::subImage(xoffset, yoffset, 0, width, height, 1, format, type, unpack, pixels, mImageArray[faceIndex(target)][level])) int faceIndex = targetToIndex(target);
if (Texture::subImage(xoffset, yoffset, 0, width, height, 1, format, type, unpack, pixels, mImageArray[faceIndex][level]))
{ {
commitRect(faceIndex(target), level, xoffset, yoffset, width, height); commitRect(faceIndex, level, xoffset, yoffset, width, height);
} }
} }
void TextureCubeMap::subImageCompressed(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *pixels) void TextureCubeMap::subImageCompressed(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *pixels)
{ {
if (Texture::subImageCompressed(xoffset, yoffset, 0, width, height, 1, format, imageSize, pixels, mImageArray[faceIndex(target)][level])) int faceIndex = targetToIndex(target);
if (Texture::subImageCompressed(xoffset, yoffset, 0, width, height, 1, format, imageSize, pixels, mImageArray[faceIndex][level]))
{ {
commitRect(faceIndex(target), level, xoffset, yoffset, width, height); commitRect(faceIndex, level, xoffset, yoffset, width, height);
} }
} }
...@@ -1173,9 +1176,9 @@ bool TextureCubeMap::isCubeComplete() const ...@@ -1173,9 +1176,9 @@ bool TextureCubeMap::isCubeComplete() const
return false; return false;
} }
for (unsigned int face = 1; face < 6; face++) for (int faceIndex = 1; faceIndex < 6; faceIndex++)
{ {
const rx::Image &faceBaseImage = *mImageArray[face][0]; const rx::Image &faceBaseImage = *mImageArray[faceIndex][0];
if (faceBaseImage.getWidth() != baseWidth || if (faceBaseImage.getWidth() != baseWidth ||
faceBaseImage.getHeight() != baseHeight || faceBaseImage.getHeight() != baseHeight ||
...@@ -1217,9 +1220,9 @@ bool TextureCubeMap::isMipmapCubeComplete() const ...@@ -1217,9 +1220,9 @@ bool TextureCubeMap::isMipmapCubeComplete() const
return true; return true;
} }
bool TextureCubeMap::isFaceLevelComplete(int face, int level) const bool TextureCubeMap::isFaceLevelComplete(int faceIndex, int level) const
{ {
ASSERT(level >= 0 && face < 6 && level < (int)ArraySize(mImageArray[face]) && mImageArray[face][level] != NULL); ASSERT(level >= 0 && faceIndex < 6 && level < (int)ArraySize(mImageArray[faceIndex]) && mImageArray[faceIndex][level] != NULL);
if (isImmutable()) if (isImmutable())
{ {
...@@ -1242,7 +1245,7 @@ bool TextureCubeMap::isFaceLevelComplete(int face, int level) const ...@@ -1242,7 +1245,7 @@ bool TextureCubeMap::isFaceLevelComplete(int face, int level) const
} }
// Check that non-zero levels are consistent with the base level. // Check that non-zero levels are consistent with the base level.
const rx::Image *faceLevelImage = mImageArray[face][level]; const rx::Image *faceLevelImage = mImageArray[faceIndex][level];
if (faceLevelImage->getInternalFormat() != getBaseLevelInternalFormat()) if (faceLevelImage->getInternalFormat() != getBaseLevelInternalFormat())
{ {
...@@ -1285,11 +1288,11 @@ void TextureCubeMap::createTexture() ...@@ -1285,11 +1288,11 @@ void TextureCubeMap::createTexture()
{ {
int levels = levelCount(); int levels = levelCount();
for (int face = 0; face < 6; face++) for (int faceIndex = 0; faceIndex < 6; faceIndex++)
{ {
for (int level = 0; level < levels; level++) for (int level = 0; level < levels; level++)
{ {
mImageArray[face][level]->setManagedSurface(mTexStorage, face, level); mImageArray[faceIndex][level]->setManagedSurface(mTexStorage, faceIndex, level);
} }
} }
} }
...@@ -1313,14 +1316,14 @@ void TextureCubeMap::updateTexture() ...@@ -1313,14 +1316,14 @@ void TextureCubeMap::updateTexture()
} }
} }
void TextureCubeMap::updateTextureFaceLevel(int face, int level) void TextureCubeMap::updateTextureFaceLevel(int faceIndex, int level)
{ {
ASSERT(level >= 0 && face < 6 && level < (int)ArraySize(mImageArray[face]) && mImageArray[face][level] != NULL); ASSERT(level >= 0 && faceIndex < 6 && level < (int)ArraySize(mImageArray[faceIndex]) && mImageArray[faceIndex][level] != NULL);
rx::Image *image = mImageArray[face][level]; rx::Image *image = mImageArray[faceIndex][level];
if (image->isDirty()) if (image->isDirty())
{ {
commitRect(face, level, 0, 0, image->getWidth(), image->getHeight()); commitRect(faceIndex, level, 0, 0, image->getWidth(), image->getHeight());
} }
} }
...@@ -1369,7 +1372,7 @@ void TextureCubeMap::setImage(int faceIndex, GLint level, GLsizei width, GLsizei ...@@ -1369,7 +1372,7 @@ void TextureCubeMap::setImage(int faceIndex, GLint level, GLsizei width, GLsizei
Texture::setImage(unpack, type, pixels, mImageArray[faceIndex][level]); Texture::setImage(unpack, type, pixels, mImageArray[faceIndex][level]);
} }
unsigned int TextureCubeMap::faceIndex(GLenum face) int TextureCubeMap::targetToIndex(GLenum target)
{ {
META_ASSERT(GL_TEXTURE_CUBE_MAP_NEGATIVE_X - GL_TEXTURE_CUBE_MAP_POSITIVE_X == 1); META_ASSERT(GL_TEXTURE_CUBE_MAP_NEGATIVE_X - GL_TEXTURE_CUBE_MAP_POSITIVE_X == 1);
META_ASSERT(GL_TEXTURE_CUBE_MAP_POSITIVE_Y - GL_TEXTURE_CUBE_MAP_POSITIVE_X == 2); META_ASSERT(GL_TEXTURE_CUBE_MAP_POSITIVE_Y - GL_TEXTURE_CUBE_MAP_POSITIVE_X == 2);
...@@ -1377,17 +1380,17 @@ unsigned int TextureCubeMap::faceIndex(GLenum face) ...@@ -1377,17 +1380,17 @@ unsigned int TextureCubeMap::faceIndex(GLenum face)
META_ASSERT(GL_TEXTURE_CUBE_MAP_POSITIVE_Z - GL_TEXTURE_CUBE_MAP_POSITIVE_X == 4); META_ASSERT(GL_TEXTURE_CUBE_MAP_POSITIVE_Z - GL_TEXTURE_CUBE_MAP_POSITIVE_X == 4);
META_ASSERT(GL_TEXTURE_CUBE_MAP_NEGATIVE_Z - GL_TEXTURE_CUBE_MAP_POSITIVE_X == 5); META_ASSERT(GL_TEXTURE_CUBE_MAP_NEGATIVE_Z - GL_TEXTURE_CUBE_MAP_POSITIVE_X == 5);
return face - GL_TEXTURE_CUBE_MAP_POSITIVE_X; return target - GL_TEXTURE_CUBE_MAP_POSITIVE_X;
} }
void TextureCubeMap::redefineImage(int face, GLint level, GLenum internalformat, GLsizei width, GLsizei height) void TextureCubeMap::redefineImage(int faceIndex, GLint level, GLenum internalformat, GLsizei width, GLsizei height)
{ {
// 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 GLenum storageFormat = getBaseLevelInternalFormat(); const GLenum storageFormat = getBaseLevelInternalFormat();
mImageArray[face][level]->redefine(mRenderer, GL_TEXTURE_CUBE_MAP, internalformat, width, height, 1, false); mImageArray[faceIndex][level]->redefine(mRenderer, GL_TEXTURE_CUBE_MAP, internalformat, width, height, 1, false);
if (mTexStorage) if (mTexStorage)
{ {
...@@ -1398,11 +1401,11 @@ void TextureCubeMap::redefineImage(int face, GLint level, GLenum internalformat, ...@@ -1398,11 +1401,11 @@ void TextureCubeMap::redefineImage(int face, GLint level, GLenum internalformat,
height != storageHeight || height != storageHeight ||
internalformat != storageFormat) // Discard mismatched storage internalformat != storageFormat) // Discard mismatched storage
{ {
for (int i = 0; i < IMPLEMENTATION_MAX_TEXTURE_LEVELS; i++) for (int level = 0; level < IMPLEMENTATION_MAX_TEXTURE_LEVELS; level++)
{ {
for (int f = 0; f < 6; f++) for (int faceIndex = 0; faceIndex < 6; faceIndex++)
{ {
mImageArray[f][i]->markDirty(); mImageArray[faceIndex][level]->markDirty();
} }
} }
...@@ -1416,21 +1419,21 @@ void TextureCubeMap::redefineImage(int face, GLint level, GLenum internalformat, ...@@ -1416,21 +1419,21 @@ void TextureCubeMap::redefineImage(int face, GLint level, GLenum internalformat,
void TextureCubeMap::copyImage(GLenum target, GLint level, GLenum format, GLint x, GLint y, GLsizei width, GLsizei height, Framebuffer *source) void TextureCubeMap::copyImage(GLenum target, GLint level, GLenum format, GLint x, GLint y, GLsizei width, GLsizei height, Framebuffer *source)
{ {
unsigned int faceindex = faceIndex(target); int faceIndex = targetToIndex(target);
GLuint clientVersion = mRenderer->getCurrentClientVersion(); GLuint clientVersion = mRenderer->getCurrentClientVersion();
GLenum sizedInternalFormat = IsSizedInternalFormat(format, clientVersion) ? format GLenum sizedInternalFormat = IsSizedInternalFormat(format, clientVersion) ? format
: GetSizedInternalFormat(format, GL_UNSIGNED_BYTE, clientVersion); : GetSizedInternalFormat(format, GL_UNSIGNED_BYTE, clientVersion);
redefineImage(faceindex, level, sizedInternalFormat, width, height); redefineImage(faceIndex, level, sizedInternalFormat, width, height);
if (!mImageArray[faceindex][level]->isRenderableFormat()) if (!mImageArray[faceIndex][level]->isRenderableFormat())
{ {
mImageArray[faceindex][level]->copy(0, 0, 0, x, y, width, height, source); mImageArray[faceIndex][level]->copy(0, 0, 0, x, y, width, height, source);
mDirtyImages = true; mDirtyImages = true;
} }
else else
{ {
ensureRenderTarget(); ensureRenderTarget();
mImageArray[faceindex][level]->markClean(); mImageArray[faceIndex][level]->markClean();
ASSERT(width == height); ASSERT(width == height);
...@@ -1449,23 +1452,23 @@ void TextureCubeMap::copyImage(GLenum target, GLint level, GLenum format, GLint ...@@ -1449,23 +1452,23 @@ void TextureCubeMap::copyImage(GLenum target, GLint level, GLenum format, GLint
void TextureCubeMap::copySubImage(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height, Framebuffer *source) void TextureCubeMap::copySubImage(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height, Framebuffer *source)
{ {
GLsizei size = mImageArray[faceIndex(target)][level]->getWidth(); int faceIndex = targetToIndex(target);
GLsizei size = mImageArray[faceIndex][level]->getWidth();
if (xoffset + width > size || yoffset + height > size || zoffset != 0) if (xoffset + width > size || yoffset + height > size || zoffset != 0)
{ {
return gl::error(GL_INVALID_VALUE); return gl::error(GL_INVALID_VALUE);
} }
unsigned int face = faceIndex(target);
// We can only make our texture storage to a render target if the level we're copying *to* is complete // We can only make our texture storage to a render target if the level we're copying *to* is complete
// and the base level is cube-complete. The base level must be cube complete (common case) because we cannot // and the base level is cube-complete. The base level must be cube complete (common case) because we cannot
// rely on the "getBaseLevel*" methods reliably otherwise. // rely on the "getBaseLevel*" methods reliably otherwise.
bool canCreateRenderTarget = isFaceLevelComplete(face, level) && isCubeComplete(); bool canCreateRenderTarget = isFaceLevelComplete(faceIndex, level) && isCubeComplete();
if (!mImageArray[face][level]->isRenderableFormat() || (!mTexStorage && !canCreateRenderTarget)) if (!mImageArray[faceIndex][level]->isRenderableFormat() || (!mTexStorage && !canCreateRenderTarget))
{ {
mImageArray[face][level]->copy(0, 0, 0, x, y, width, height, source); mImageArray[faceIndex][level]->copy(0, 0, 0, x, y, width, height, source);
mDirtyImages = true; mDirtyImages = true;
} }
else else
...@@ -1474,7 +1477,7 @@ void TextureCubeMap::copySubImage(GLenum target, GLint level, GLint xoffset, GLi ...@@ -1474,7 +1477,7 @@ void TextureCubeMap::copySubImage(GLenum target, GLint level, GLint xoffset, GLi
if (level < levelCount()) if (level < levelCount())
{ {
updateTextureFaceLevel(face, level); updateTextureFaceLevel(faceIndex, level);
GLuint clientVersion = mRenderer->getCurrentClientVersion(); GLuint clientVersion = mRenderer->getCurrentClientVersion();
...@@ -1499,17 +1502,17 @@ void TextureCubeMap::storage(GLsizei levels, GLenum internalformat, GLsizei size ...@@ -1499,17 +1502,17 @@ void TextureCubeMap::storage(GLsizei levels, GLenum internalformat, GLsizei size
for (int level = 0; level < levels; level++) for (int level = 0; level < levels; level++)
{ {
GLsizei mipSize = std::max(1, size >> level); GLsizei mipSize = std::max(1, size >> level);
for (int face = 0; face < 6; face++) for (int faceIndex = 0; faceIndex < 6; faceIndex++)
{ {
mImageArray[face][level]->redefine(mRenderer, GL_TEXTURE_CUBE_MAP, internalformat, mipSize, mipSize, 1, true); mImageArray[faceIndex][level]->redefine(mRenderer, GL_TEXTURE_CUBE_MAP, internalformat, mipSize, mipSize, 1, true);
} }
} }
for (int level = levels; level < IMPLEMENTATION_MAX_TEXTURE_LEVELS; level++) for (int level = levels; level < IMPLEMENTATION_MAX_TEXTURE_LEVELS; level++)
{ {
for (int face = 0; face < 6; face++) for (int faceIndex = 0; faceIndex < 6; faceIndex++)
{ {
mImageArray[face][level]->redefine(mRenderer, GL_TEXTURE_CUBE_MAP, GL_NONE, 0, 0, 0, true); mImageArray[faceIndex][level]->redefine(mRenderer, GL_TEXTURE_CUBE_MAP, GL_NONE, 0, 0, 0, true);
} }
} }
...@@ -1517,11 +1520,11 @@ void TextureCubeMap::storage(GLsizei levels, GLenum internalformat, GLsizei size ...@@ -1517,11 +1520,11 @@ void TextureCubeMap::storage(GLsizei levels, GLenum internalformat, GLsizei size
{ {
int levels = levelCount(); int levels = levelCount();
for (int face = 0; face < 6; face++) for (int faceIndex = 0; faceIndex < 6; faceIndex++)
{ {
for (int level = 0; level < levels; level++) for (int level = 0; level < levels; level++)
{ {
mImageArray[face][level]->setManagedSurface(mTexStorage, face, level); mImageArray[faceIndex][level]->setManagedSurface(mTexStorage, faceIndex, level);
} }
} }
} }
...@@ -1530,36 +1533,36 @@ void TextureCubeMap::storage(GLsizei levels, GLenum internalformat, GLsizei size ...@@ -1530,36 +1533,36 @@ void TextureCubeMap::storage(GLsizei levels, GLenum internalformat, GLsizei size
void TextureCubeMap::generateMipmaps() void TextureCubeMap::generateMipmaps()
{ {
// Purge array levels 1 through q and reset them to represent the generated mipmap levels. // Purge array levels 1 through q and reset them to represent the generated mipmap levels.
unsigned int q = log2(getBaseLevelWidth()); int q = log2(getBaseLevelWidth());
for (unsigned int f = 0; f < 6; f++) for (int faceIndex = 0; faceIndex < 6; faceIndex++)
{ {
for (unsigned int i = 1; i <= q; i++) for (int level = 1; level <= q; level++)
{ {
redefineImage(f, i, mImageArray[f][0]->getInternalFormat(), redefineImage(faceIndex, level, mImageArray[faceIndex][0]->getInternalFormat(),
std::max(mImageArray[f][0]->getWidth() >> i, 1), std::max(mImageArray[faceIndex][0]->getWidth() >> level, 1),
std::max(mImageArray[f][0]->getWidth() >> i, 1)); std::max(mImageArray[faceIndex][0]->getWidth() >> level, 1));
} }
} }
if (mTexStorage && mTexStorage->isRenderTarget()) if (mTexStorage && mTexStorage->isRenderTarget())
{ {
for (unsigned int f = 0; f < 6; f++) for (int faceIndex = 0; faceIndex < 6; faceIndex++)
{ {
for (unsigned int i = 1; i <= q; i++) for (int level = 1; level <= q; level++)
{ {
mTexStorage->generateMipmap(f, i); mTexStorage->generateMipmap(faceIndex, level);
mImageArray[f][i]->markClean(); mImageArray[faceIndex][level]->markClean();
} }
} }
} }
else else
{ {
for (unsigned int f = 0; f < 6; f++) for (int faceIndex = 0; faceIndex < 6; faceIndex++)
{ {
for (unsigned int i = 1; i <= q; i++) for (int level = 1; level <= q; level++)
{ {
mRenderer->generateMipmap(mImageArray[f][i], mImageArray[f][i - 1]); mRenderer->generateMipmap(mImageArray[faceIndex][level], mImageArray[faceIndex][level - 1]);
} }
} }
} }
...@@ -1579,21 +1582,21 @@ Renderbuffer *TextureCubeMap::getRenderbuffer(GLenum target, GLint level) ...@@ -1579,21 +1582,21 @@ Renderbuffer *TextureCubeMap::getRenderbuffer(GLenum target, GLint level)
return gl::error(GL_INVALID_OPERATION, (Renderbuffer *)NULL); return gl::error(GL_INVALID_OPERATION, (Renderbuffer *)NULL);
} }
unsigned int face = faceIndex(target); int faceIndex = targetToIndex(target);
Renderbuffer *renderBuffer = mRenderbufferProxies.get(level, face); Renderbuffer *renderBuffer = mRenderbufferProxies.get(level, faceIndex);
if (!renderBuffer) if (!renderBuffer)
{ {
renderBuffer = new Renderbuffer(mRenderer, id(), new RenderbufferTextureCubeMap(this, target, level)); renderBuffer = new Renderbuffer(mRenderer, id(), new RenderbufferTextureCubeMap(this, target, level));
mRenderbufferProxies.add(level, face, renderBuffer); mRenderbufferProxies.add(level, faceIndex, renderBuffer);
} }
return renderBuffer; return renderBuffer;
} }
unsigned int TextureCubeMap::getRenderTargetSerial(GLenum faceTarget, GLint level) unsigned int TextureCubeMap::getRenderTargetSerial(GLenum target, GLint level)
{ {
return (ensureRenderTarget() ? mTexStorage->getRenderTargetSerial(faceTarget, level) : 0); return (ensureRenderTarget() ? mTexStorage->getRenderTargetSerial(target, level) : 0);
} }
rx::RenderTarget *TextureCubeMap::getRenderTarget(GLenum target, GLint level) rx::RenderTarget *TextureCubeMap::getRenderTarget(GLenum target, GLint level)
...@@ -1606,7 +1609,7 @@ rx::RenderTarget *TextureCubeMap::getRenderTarget(GLenum target, GLint level) ...@@ -1606,7 +1609,7 @@ rx::RenderTarget *TextureCubeMap::getRenderTarget(GLenum target, GLint level)
return NULL; return NULL;
} }
updateTextureFaceLevel(faceIndex(target), level); updateTextureFaceLevel(targetToIndex(target), level);
// ensure this is NOT a depth texture // ensure this is NOT a depth texture
if (isDepth(target, level)) if (isDepth(target, level))
...@@ -1627,7 +1630,7 @@ rx::RenderTarget *TextureCubeMap::getDepthStencil(GLenum target, GLint level) ...@@ -1627,7 +1630,7 @@ rx::RenderTarget *TextureCubeMap::getDepthStencil(GLenum target, GLint level)
return NULL; return NULL;
} }
updateTextureFaceLevel(faceIndex(target), level); updateTextureFaceLevel(targetToIndex(target), level);
// ensure this is a depth texture // ensure this is a depth texture
if (!isDepth(target, level)) if (!isDepth(target, level))
......
...@@ -235,7 +235,7 @@ class TextureCubeMap : public Texture ...@@ -235,7 +235,7 @@ class TextureCubeMap : public Texture
void setImagePosZ(GLint level, GLsizei width, GLsizei height, GLenum internalFormat, GLenum format, GLenum type, const PixelUnpackState &unpack, const void *pixels); void setImagePosZ(GLint level, GLsizei width, GLsizei height, GLenum internalFormat, GLenum format, GLenum type, const PixelUnpackState &unpack, const void *pixels);
void setImageNegZ(GLint level, GLsizei width, GLsizei height, GLenum internalFormat, GLenum format, GLenum type, const PixelUnpackState &unpack, const void *pixels); void setImageNegZ(GLint level, GLsizei width, GLsizei height, GLenum internalFormat, GLenum format, GLenum type, const PixelUnpackState &unpack, const void *pixels);
void setCompressedImage(GLenum face, GLint level, GLenum format, GLsizei width, GLsizei height, GLsizei imageSize, const void *pixels); void setCompressedImage(GLenum target, GLint level, GLenum format, GLsizei width, GLsizei height, GLsizei imageSize, const void *pixels);
void subImage(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const PixelUnpackState &unpack, const void *pixels); void subImage(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const PixelUnpackState &unpack, const void *pixels);
void subImageCompressed(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *pixels); void subImageCompressed(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *pixels);
...@@ -249,9 +249,9 @@ class TextureCubeMap : public Texture ...@@ -249,9 +249,9 @@ class TextureCubeMap : public Texture
virtual void generateMipmaps(); virtual void generateMipmaps();
Renderbuffer *getRenderbuffer(GLenum target, GLint level); Renderbuffer *getRenderbuffer(GLenum target, GLint level);
unsigned int getRenderTargetSerial(GLenum faceTarget, GLint level); unsigned int getRenderTargetSerial(GLenum target, GLint level);
static unsigned int faceIndex(GLenum face); static int targetToIndex(GLenum target);
protected: protected:
friend class RenderbufferTextureCubeMap; friend class RenderbufferTextureCubeMap;
...@@ -269,8 +269,8 @@ class TextureCubeMap : public Texture ...@@ -269,8 +269,8 @@ class TextureCubeMap : public Texture
virtual const rx::Image *getBaseLevelImage() const; virtual const rx::Image *getBaseLevelImage() const;
bool isMipmapCubeComplete() const; bool isMipmapCubeComplete() const;
bool isFaceLevelComplete(int face, int level) const; bool isFaceLevelComplete(int faceIndex, int level) const;
void updateTextureFaceLevel(int face, int level); void updateTextureFaceLevel(int faceIndex, int level);
void setImage(int faceIndex, GLint level, GLsizei width, GLsizei height, GLenum internalFormat, GLenum format, GLenum type, const PixelUnpackState &unpack, const void *pixels); void setImage(int faceIndex, GLint level, GLsizei width, GLsizei height, GLenum internalFormat, GLenum format, GLenum type, const PixelUnpackState &unpack, const void *pixels);
void commitRect(int faceIndex, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height); void commitRect(int faceIndex, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height);
......
...@@ -118,14 +118,14 @@ RenderTarget *TextureStorageInterfaceCube::getRenderTarget(GLenum faceTarget, GL ...@@ -118,14 +118,14 @@ RenderTarget *TextureStorageInterfaceCube::getRenderTarget(GLenum faceTarget, GL
return mInstance->getRenderTargetFace(faceTarget, level); return mInstance->getRenderTargetFace(faceTarget, level);
} }
void TextureStorageInterfaceCube::generateMipmap(int face, int level) void TextureStorageInterfaceCube::generateMipmap(int faceIndex, int level)
{ {
mInstance->generateMipmap(face, level); mInstance->generateMipmap(faceIndex, level);
} }
unsigned int TextureStorageInterfaceCube::getRenderTargetSerial(GLenum target, GLint level) const unsigned int TextureStorageInterfaceCube::getRenderTargetSerial(GLenum target, GLint level) const
{ {
return mFirstRenderTargetSerial + (level * 6) + gl::TextureCubeMap::faceIndex(target); return mFirstRenderTargetSerial + (level * 6) + gl::TextureCubeMap::targetToIndex(target);
} }
TextureStorageInterface3D::TextureStorageInterface3D(Renderer *renderer, int levels, GLenum internalformat, bool renderTarget, TextureStorageInterface3D::TextureStorageInterface3D(Renderer *renderer, int levels, GLenum internalformat, bool renderTarget,
......
...@@ -92,7 +92,7 @@ class TextureStorageInterfaceCube : public TextureStorageInterface ...@@ -92,7 +92,7 @@ class TextureStorageInterfaceCube : public TextureStorageInterface
TextureStorageInterfaceCube(Renderer *renderer, int levels, GLenum internalformat, bool renderTarget, int size); TextureStorageInterfaceCube(Renderer *renderer, int levels, GLenum internalformat, bool renderTarget, int size);
virtual ~TextureStorageInterfaceCube(); virtual ~TextureStorageInterfaceCube();
void generateMipmap(int face, int level); void generateMipmap(int faceIndex, int level);
RenderTarget *getRenderTarget(GLenum faceTarget, GLint level) const; RenderTarget *getRenderTarget(GLenum faceTarget, GLint level) const;
virtual unsigned int getRenderTargetSerial(GLenum target, GLint level) const; virtual unsigned int getRenderTargetSerial(GLenum target, GLint level) const;
......
...@@ -515,10 +515,10 @@ ID3D11Resource *TextureStorage11_Cube::getBaseTexture() const ...@@ -515,10 +515,10 @@ ID3D11Resource *TextureStorage11_Cube::getBaseTexture() const
RenderTarget *TextureStorage11_Cube::getRenderTargetFace(GLenum faceTarget, int level) RenderTarget *TextureStorage11_Cube::getRenderTargetFace(GLenum faceTarget, int level)
{ {
unsigned int faceIdx = gl::TextureCubeMap::faceIndex(faceTarget);
if (level >= 0 && level < static_cast<int>(mMipLevels)) if (level >= 0 && level < static_cast<int>(mMipLevels))
{ {
if (!mRenderTarget[faceIdx][level]) int faceIndex = gl::TextureCubeMap::targetToIndex(faceTarget);
if (!mRenderTarget[faceIndex][level])
{ {
ID3D11Device *device = mRenderer->getDevice(); ID3D11Device *device = mRenderer->getDevice();
HRESULT result; HRESULT result;
...@@ -528,7 +528,7 @@ RenderTarget *TextureStorage11_Cube::getRenderTargetFace(GLenum faceTarget, int ...@@ -528,7 +528,7 @@ RenderTarget *TextureStorage11_Cube::getRenderTargetFace(GLenum faceTarget, int
srvDesc.ViewDimension = D3D11_SRV_DIMENSION_TEXTURE2DARRAY; // Will be used with Texture2D sampler, not TextureCube srvDesc.ViewDimension = D3D11_SRV_DIMENSION_TEXTURE2DARRAY; // Will be used with Texture2D sampler, not TextureCube
srvDesc.Texture2DArray.MostDetailedMip = level; srvDesc.Texture2DArray.MostDetailedMip = level;
srvDesc.Texture2DArray.MipLevels = 1; srvDesc.Texture2DArray.MipLevels = 1;
srvDesc.Texture2DArray.FirstArraySlice = faceIdx; srvDesc.Texture2DArray.FirstArraySlice = faceIndex;
srvDesc.Texture2DArray.ArraySize = 1; srvDesc.Texture2DArray.ArraySize = 1;
ID3D11ShaderResourceView *srv; ID3D11ShaderResourceView *srv;
...@@ -546,7 +546,7 @@ RenderTarget *TextureStorage11_Cube::getRenderTargetFace(GLenum faceTarget, int ...@@ -546,7 +546,7 @@ RenderTarget *TextureStorage11_Cube::getRenderTargetFace(GLenum faceTarget, int
rtvDesc.Format = mRenderTargetFormat; rtvDesc.Format = mRenderTargetFormat;
rtvDesc.ViewDimension = D3D11_RTV_DIMENSION_TEXTURE2DARRAY; rtvDesc.ViewDimension = D3D11_RTV_DIMENSION_TEXTURE2DARRAY;
rtvDesc.Texture2DArray.MipSlice = level; rtvDesc.Texture2DArray.MipSlice = level;
rtvDesc.Texture2DArray.FirstArraySlice = faceIdx; rtvDesc.Texture2DArray.FirstArraySlice = faceIndex;
rtvDesc.Texture2DArray.ArraySize = 1; rtvDesc.Texture2DArray.ArraySize = 1;
ID3D11RenderTargetView *rtv; ID3D11RenderTargetView *rtv;
...@@ -563,7 +563,7 @@ RenderTarget *TextureStorage11_Cube::getRenderTargetFace(GLenum faceTarget, int ...@@ -563,7 +563,7 @@ RenderTarget *TextureStorage11_Cube::getRenderTargetFace(GLenum faceTarget, int
// also needs to keep a reference to the texture. // also needs to keep a reference to the texture.
mTexture->AddRef(); mTexture->AddRef();
mRenderTarget[faceIdx][level] = new RenderTarget11(mRenderer, rtv, mTexture, srv, mRenderTarget[faceIndex][level] = new RenderTarget11(mRenderer, rtv, mTexture, srv,
std::max(mTextureWidth >> level, 1U), std::max(mTextureWidth >> level, 1U),
std::max(mTextureHeight >> level, 1U), std::max(mTextureHeight >> level, 1U),
1); 1);
...@@ -575,7 +575,7 @@ RenderTarget *TextureStorage11_Cube::getRenderTargetFace(GLenum faceTarget, int ...@@ -575,7 +575,7 @@ RenderTarget *TextureStorage11_Cube::getRenderTargetFace(GLenum faceTarget, int
dsvDesc.ViewDimension = D3D11_DSV_DIMENSION_TEXTURE2DARRAY; dsvDesc.ViewDimension = D3D11_DSV_DIMENSION_TEXTURE2DARRAY;
dsvDesc.Flags = 0; dsvDesc.Flags = 0;
dsvDesc.Texture2DArray.MipSlice = level; dsvDesc.Texture2DArray.MipSlice = level;
dsvDesc.Texture2DArray.FirstArraySlice = faceIdx; dsvDesc.Texture2DArray.FirstArraySlice = faceIndex;
dsvDesc.Texture2DArray.ArraySize = 1; dsvDesc.Texture2DArray.ArraySize = 1;
ID3D11DepthStencilView *dsv; ID3D11DepthStencilView *dsv;
...@@ -592,7 +592,7 @@ RenderTarget *TextureStorage11_Cube::getRenderTargetFace(GLenum faceTarget, int ...@@ -592,7 +592,7 @@ RenderTarget *TextureStorage11_Cube::getRenderTargetFace(GLenum faceTarget, int
// also needs to keep a reference to the texture. // also needs to keep a reference to the texture.
mTexture->AddRef(); mTexture->AddRef();
mRenderTarget[faceIdx][level] = new RenderTarget11(mRenderer, dsv, mTexture, srv, mRenderTarget[faceIndex][level] = new RenderTarget11(mRenderer, dsv, mTexture, srv,
std::max(mTextureWidth >> level, 1U), std::max(mTextureWidth >> level, 1U),
std::max(mTextureHeight >> level, 1U), std::max(mTextureHeight >> level, 1U),
1); 1);
...@@ -603,7 +603,7 @@ RenderTarget *TextureStorage11_Cube::getRenderTargetFace(GLenum faceTarget, int ...@@ -603,7 +603,7 @@ RenderTarget *TextureStorage11_Cube::getRenderTargetFace(GLenum faceTarget, int
} }
} }
return mRenderTarget[faceIdx][level]; return mRenderTarget[faceIndex][level];
} }
else else
{ {
...@@ -635,10 +635,10 @@ ID3D11ShaderResourceView *TextureStorage11_Cube::getSRV() ...@@ -635,10 +635,10 @@ ID3D11ShaderResourceView *TextureStorage11_Cube::getSRV()
return mSRV; return mSRV;
} }
void TextureStorage11_Cube::generateMipmap(int face, int level) void TextureStorage11_Cube::generateMipmap(int faceIndex, int level)
{ {
RenderTarget11 *source = RenderTarget11::makeRenderTarget11(getRenderTargetFace(GL_TEXTURE_CUBE_MAP_POSITIVE_X + face, level - 1)); RenderTarget11 *source = RenderTarget11::makeRenderTarget11(getRenderTargetFace(GL_TEXTURE_CUBE_MAP_POSITIVE_X + faceIndex, level - 1));
RenderTarget11 *dest = RenderTarget11::makeRenderTarget11(getRenderTargetFace(GL_TEXTURE_CUBE_MAP_POSITIVE_X + face, level)); RenderTarget11 *dest = RenderTarget11::makeRenderTarget11(getRenderTargetFace(GL_TEXTURE_CUBE_MAP_POSITIVE_X + faceIndex, level));
generateMipmapLayer(source, dest); generateMipmapLayer(source, dest);
} }
......
...@@ -109,7 +109,7 @@ class TextureStorage11_Cube : public TextureStorage11 ...@@ -109,7 +109,7 @@ class TextureStorage11_Cube : public TextureStorage11
virtual ID3D11ShaderResourceView *getSRV(); virtual ID3D11ShaderResourceView *getSRV();
virtual RenderTarget *getRenderTargetFace(GLenum faceTarget, int level); virtual RenderTarget *getRenderTargetFace(GLenum faceTarget, int level);
virtual void generateMipmap(int face, int level); virtual void generateMipmap(int faceIndex, int level);
private: private:
DISALLOW_COPY_AND_ASSIGN(TextureStorage11_Cube); DISALLOW_COPY_AND_ASSIGN(TextureStorage11_Cube);
......
...@@ -261,13 +261,13 @@ IDirect3DSurface9 *TextureStorage9_Cube::getCubeMapSurface(GLenum faceTarget, in ...@@ -261,13 +261,13 @@ IDirect3DSurface9 *TextureStorage9_Cube::getCubeMapSurface(GLenum faceTarget, in
RenderTarget *TextureStorage9_Cube::getRenderTargetFace(GLenum faceTarget, int level) RenderTarget *TextureStorage9_Cube::getRenderTargetFace(GLenum faceTarget, int level)
{ {
return mRenderTarget[gl::TextureCubeMap::faceIndex(faceTarget)]; return mRenderTarget[gl::TextureCubeMap::targetToIndex(faceTarget)];
} }
void TextureStorage9_Cube::generateMipmap(int face, int level) void TextureStorage9_Cube::generateMipmap(int faceIndex, int level)
{ {
IDirect3DSurface9 *upper = getCubeMapSurface(GL_TEXTURE_CUBE_MAP_POSITIVE_X + face, level - 1, false); IDirect3DSurface9 *upper = getCubeMapSurface(GL_TEXTURE_CUBE_MAP_POSITIVE_X + faceIndex, level - 1, false);
IDirect3DSurface9 *lower = getCubeMapSurface(GL_TEXTURE_CUBE_MAP_POSITIVE_X + face, level, true); IDirect3DSurface9 *lower = getCubeMapSurface(GL_TEXTURE_CUBE_MAP_POSITIVE_X + faceIndex, level, true);
if (upper != NULL && lower != NULL) if (upper != NULL && lower != NULL)
{ {
......
...@@ -91,7 +91,7 @@ class TextureStorage9_Cube : public TextureStorage9 ...@@ -91,7 +91,7 @@ class TextureStorage9_Cube : public TextureStorage9
IDirect3DSurface9 *getCubeMapSurface(GLenum faceTarget, int level, bool dirty); IDirect3DSurface9 *getCubeMapSurface(GLenum faceTarget, int level, bool dirty);
virtual RenderTarget *getRenderTargetFace(GLenum faceTarget, int level); virtual RenderTarget *getRenderTargetFace(GLenum faceTarget, int level);
virtual IDirect3DBaseTexture9 *getBaseTexture() const; virtual IDirect3DBaseTexture9 *getBaseTexture() const;
virtual void generateMipmap(int face, int level); virtual void generateMipmap(int faceIndex, int level);
private: private:
DISALLOW_COPY_AND_ASSIGN(TextureStorage9_Cube); DISALLOW_COPY_AND_ASSIGN(TextureStorage9_Cube);
......
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