Add ImageIndexIterator.
We can use image index iterators to iterate over all images in a
Texture. This allows us to do some operations in TextureD3D rather
than in the typed subclasses and save on some repeated code.
BUG=angle:729
Change-Id: I3ba47b2eebad2cfca313117fd501ff76d5107044
Reviewed-on: https://chromium-review.googlesource.com/219834
Tested-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Brandon Jones <bajones@chromium.org>
diff --git a/src/libGLESv2/renderer/d3d/TextureD3D.cpp b/src/libGLESv2/renderer/d3d/TextureD3D.cpp
index 7bb6947..e522b85 100644
--- a/src/libGLESv2/renderer/d3d/TextureD3D.cpp
+++ b/src/libGLESv2/renderer/d3d/TextureD3D.cpp
@@ -739,6 +739,10 @@
}
}
+gl::ImageIndexIterator TextureD3D_2D::imageIterator() const
+{
+ return gl::ImageIndexIterator::Make2D(0, mTexStorage->getLevelCount());
+}
TextureD3D_Cube::TextureD3D_Cube(Renderer *renderer)
: TextureD3D(renderer),
@@ -1245,6 +1249,10 @@
}
}
+gl::ImageIndexIterator TextureD3D_Cube::imageIterator() const
+{
+ return gl::ImageIndexIterator::MakeCube(0, mTexStorage->getLevelCount());
+}
TextureD3D_3D::TextureD3D_3D(Renderer *renderer)
: TextureD3D(renderer),
@@ -1739,6 +1747,11 @@
}
}
+gl::ImageIndexIterator TextureD3D_3D::imageIterator() const
+{
+ return gl::ImageIndexIterator::Make3D(0, mTexStorage->getLevelCount(),
+ gl::ImageIndex::ENTIRE_LEVEL, gl::ImageIndex::ENTIRE_LEVEL);
+}
TextureD3D_2DArray::TextureD3D_2DArray(Renderer *renderer)
: TextureD3D(renderer),
@@ -2257,4 +2270,9 @@
}
}
+gl::ImageIndexIterator TextureD3D_2DArray::imageIterator() const
+{
+ return gl::ImageIndexIterator::Make2DArray(0, mTexStorage->getLevelCount(), mLayerCounts);
+}
+
}