Add TextureD3D::getIndex.
This is a simple virtual method which gives an ImageIndex at a
particular level and layer. It's useful for handling all the texture
types uniformly, which all treat levels and layers differently.
BUG=angle:729
Change-Id: I72db560287272c195b1ff8555f99ab2258ac7e6d
Reviewed-on: https://chromium-review.googlesource.com/219835
Tested-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
diff --git a/src/libGLESv2/renderer/d3d/TextureD3D.cpp b/src/libGLESv2/renderer/d3d/TextureD3D.cpp
index e522b85..447254e 100644
--- a/src/libGLESv2/renderer/d3d/TextureD3D.cpp
+++ b/src/libGLESv2/renderer/d3d/TextureD3D.cpp
@@ -744,6 +744,12 @@
return gl::ImageIndexIterator::Make2D(0, mTexStorage->getLevelCount());
}
+gl::ImageIndex TextureD3D_2D::getImageIndex(GLint mip, GLint /*layer*/) const
+{
+ // "layer" does not apply to 2D Textures.
+ return gl::ImageIndex::Make2D(mip);
+}
+
TextureD3D_Cube::TextureD3D_Cube(Renderer *renderer)
: TextureD3D(renderer),
mTexStorage(NULL)
@@ -1254,6 +1260,12 @@
return gl::ImageIndexIterator::MakeCube(0, mTexStorage->getLevelCount());
}
+gl::ImageIndex TextureD3D_Cube::getImageIndex(GLint mip, GLint layer) const
+{
+ // The "layer" of the image index corresponds to the cube face
+ return gl::ImageIndex::MakeCube(gl::TextureCubeMap::layerIndexToTarget(layer), mip);
+}
+
TextureD3D_3D::TextureD3D_3D(Renderer *renderer)
: TextureD3D(renderer),
mTexStorage(NULL)
@@ -1753,6 +1765,12 @@
gl::ImageIndex::ENTIRE_LEVEL, gl::ImageIndex::ENTIRE_LEVEL);
}
+gl::ImageIndex TextureD3D_3D::getImageIndex(GLint mip, GLint /*layer*/) const
+{
+ // The "layer" here does not apply to 3D images. We use one Image per mip.
+ return gl::ImageIndex::Make3D(mip);
+}
+
TextureD3D_2DArray::TextureD3D_2DArray(Renderer *renderer)
: TextureD3D(renderer),
mTexStorage(NULL)
@@ -2275,4 +2293,9 @@
return gl::ImageIndexIterator::Make2DArray(0, mTexStorage->getLevelCount(), mLayerCounts);
}
+gl::ImageIndex TextureD3D_2DArray::getImageIndex(GLint mip, GLint layer) const
+{
+ return gl::ImageIndex::Make2DArray(mip, layer);
+}
+
}