Jamie Madill | ef4ac5b | 2014-09-29 10:46:11 -0400 | [diff] [blame] | 1 | // |
| 2 | // Copyright (c) 2014 The ANGLE Project Authors. All rights reserved. |
| 3 | // Use of this source code is governed by a BSD-style license that can be |
| 4 | // found in the LICENSE file. |
| 5 | // |
| 6 | |
| 7 | #include "gmock/gmock.h" |
| 8 | #include "gtest/gtest.h" |
Geoff Lang | 691e58c | 2014-12-19 17:03:25 -0500 | [diff] [blame] | 9 | |
| 10 | #include "common/utilities.h" |
Geoff Lang | 2b5420c | 2014-11-19 14:20:15 -0500 | [diff] [blame] | 11 | #include "libANGLE/ImageIndex.h" |
Jamie Madill | ef4ac5b | 2014-09-29 10:46:11 -0400 | [diff] [blame] | 12 | |
| 13 | using namespace gl; |
| 14 | |
| 15 | namespace |
| 16 | { |
| 17 | |
| 18 | static const GLint minMip = 0; |
| 19 | static const GLint maxMip = 4; |
| 20 | static const GLint minLayer = 1; |
| 21 | static const GLint maxLayer = 3; |
| 22 | |
| 23 | TEST(ImageIndexTest, Iterator2D) |
| 24 | { |
| 25 | ImageIndexIterator iter = ImageIndexIterator::Make2D(minMip, maxMip); |
| 26 | |
Jamie Madill | 1ea5350 | 2014-10-06 12:54:10 -0400 | [diff] [blame] | 27 | ASSERT_GE(0, minMip); |
| 28 | |
Jamie Madill | ef4ac5b | 2014-09-29 10:46:11 -0400 | [diff] [blame] | 29 | for (GLint mip = minMip; mip < maxMip; mip++) |
| 30 | { |
| 31 | EXPECT_TRUE(iter.hasNext()); |
| 32 | ImageIndex current = iter.current(); |
| 33 | ImageIndex nextIndex = iter.next(); |
| 34 | |
Corentin Wallez | 99d492c | 2018-02-27 15:17:10 -0500 | [diff] [blame] | 35 | EXPECT_EQ(TextureType::_2D, nextIndex.type); |
| 36 | EXPECT_EQ(TextureTarget::_2D, nextIndex.target); |
Jamie Madill | ef4ac5b | 2014-09-29 10:46:11 -0400 | [diff] [blame] | 37 | EXPECT_EQ(mip, nextIndex.mipIndex); |
| 38 | EXPECT_FALSE(nextIndex.hasLayer()); |
| 39 | |
| 40 | // Also test current |
| 41 | EXPECT_EQ(current.type, nextIndex.type); |
| 42 | EXPECT_EQ(current.mipIndex, nextIndex.mipIndex); |
| 43 | EXPECT_EQ(current.layerIndex, nextIndex.layerIndex); |
| 44 | } |
Jamie Madill | 96f4f45 | 2016-09-02 16:20:11 -0400 | [diff] [blame] | 45 | |
| 46 | EXPECT_FALSE(iter.hasNext()); |
Jamie Madill | ef4ac5b | 2014-09-29 10:46:11 -0400 | [diff] [blame] | 47 | } |
| 48 | |
| 49 | TEST(ImageIndexTest, IteratorCube) |
| 50 | { |
Geoff Lang | b52fac0 | 2018-02-21 15:45:35 -0500 | [diff] [blame] | 51 | ImageIndexIterator iter = ImageIndexIterator::MakeCube(minMip, maxMip); |
Jamie Madill | ef4ac5b | 2014-09-29 10:46:11 -0400 | [diff] [blame] | 52 | |
Jamie Madill | 1ea5350 | 2014-10-06 12:54:10 -0400 | [diff] [blame] | 53 | ASSERT_GE(0, minMip); |
| 54 | |
Jamie Madill | ef4ac5b | 2014-09-29 10:46:11 -0400 | [diff] [blame] | 55 | for (GLint mip = minMip; mip < maxMip; mip++) |
| 56 | { |
Corentin Wallez | 99d492c | 2018-02-27 15:17:10 -0500 | [diff] [blame] | 57 | for (TextureTarget target : AllCubeFaceTextureTargets()) |
Jamie Madill | ef4ac5b | 2014-09-29 10:46:11 -0400 | [diff] [blame] | 58 | { |
| 59 | EXPECT_TRUE(iter.hasNext()); |
| 60 | ImageIndex nextIndex = iter.next(); |
| 61 | |
Corentin Wallez | 99d492c | 2018-02-27 15:17:10 -0500 | [diff] [blame] | 62 | EXPECT_EQ(TextureType::CubeMap, nextIndex.type); |
Geoff Lang | b52fac0 | 2018-02-21 15:45:35 -0500 | [diff] [blame] | 63 | EXPECT_EQ(target, nextIndex.target); |
Jamie Madill | ef4ac5b | 2014-09-29 10:46:11 -0400 | [diff] [blame] | 64 | EXPECT_EQ(mip, nextIndex.mipIndex); |
Geoff Lang | b52fac0 | 2018-02-21 15:45:35 -0500 | [diff] [blame] | 65 | EXPECT_FALSE(nextIndex.hasLayer()); |
Jamie Madill | ef4ac5b | 2014-09-29 10:46:11 -0400 | [diff] [blame] | 66 | } |
| 67 | } |
Jamie Madill | 96f4f45 | 2016-09-02 16:20:11 -0400 | [diff] [blame] | 68 | |
| 69 | EXPECT_FALSE(iter.hasNext()); |
Jamie Madill | ef4ac5b | 2014-09-29 10:46:11 -0400 | [diff] [blame] | 70 | } |
| 71 | |
| 72 | TEST(ImageIndexTest, Iterator3D) |
| 73 | { |
Jamie Madill | ef4ac5b | 2014-09-29 10:46:11 -0400 | [diff] [blame] | 74 | ImageIndexIterator iter = ImageIndexIterator::Make3D(minMip, maxMip, minLayer, maxLayer); |
| 75 | |
Jamie Madill | 1ea5350 | 2014-10-06 12:54:10 -0400 | [diff] [blame] | 76 | ASSERT_GE(0, minMip); |
| 77 | |
Jamie Madill | ef4ac5b | 2014-09-29 10:46:11 -0400 | [diff] [blame] | 78 | for (GLint mip = minMip; mip < maxMip; mip++) |
| 79 | { |
| 80 | for (GLint layer = minLayer; layer < maxLayer; layer++) |
| 81 | { |
| 82 | EXPECT_TRUE(iter.hasNext()); |
| 83 | ImageIndex nextIndex = iter.next(); |
| 84 | |
Corentin Wallez | 99d492c | 2018-02-27 15:17:10 -0500 | [diff] [blame] | 85 | EXPECT_EQ(TextureType::_3D, nextIndex.type); |
| 86 | EXPECT_EQ(TextureTarget::_3D, nextIndex.target); |
Jamie Madill | ef4ac5b | 2014-09-29 10:46:11 -0400 | [diff] [blame] | 87 | EXPECT_EQ(mip, nextIndex.mipIndex); |
| 88 | EXPECT_EQ(layer, nextIndex.layerIndex); |
| 89 | EXPECT_TRUE(nextIndex.hasLayer()); |
| 90 | } |
| 91 | } |
Jamie Madill | 96f4f45 | 2016-09-02 16:20:11 -0400 | [diff] [blame] | 92 | |
| 93 | EXPECT_FALSE(iter.hasNext()); |
Jamie Madill | ef4ac5b | 2014-09-29 10:46:11 -0400 | [diff] [blame] | 94 | } |
| 95 | |
| 96 | TEST(ImageIndexTest, Iterator2DArray) |
| 97 | { |
Jamie Madill | 1ea5350 | 2014-10-06 12:54:10 -0400 | [diff] [blame] | 98 | GLsizei layerCounts[] = { 1, 3, 5, 2 }; |
Jamie Madill | ef4ac5b | 2014-09-29 10:46:11 -0400 | [diff] [blame] | 99 | |
| 100 | ImageIndexIterator iter = ImageIndexIterator::Make2DArray(minMip, maxMip, layerCounts); |
| 101 | |
Jamie Madill | 1ea5350 | 2014-10-06 12:54:10 -0400 | [diff] [blame] | 102 | ASSERT_GE(0, minMip); |
| 103 | ASSERT_EQ(ArraySize(layerCounts), static_cast<size_t>(maxMip)); |
| 104 | |
Jamie Madill | ef4ac5b | 2014-09-29 10:46:11 -0400 | [diff] [blame] | 105 | for (GLint mip = minMip; mip < maxMip; mip++) |
| 106 | { |
| 107 | for (GLint layer = 0; layer < layerCounts[mip]; layer++) |
| 108 | { |
| 109 | EXPECT_TRUE(iter.hasNext()); |
| 110 | ImageIndex nextIndex = iter.next(); |
| 111 | |
Corentin Wallez | 99d492c | 2018-02-27 15:17:10 -0500 | [diff] [blame] | 112 | EXPECT_EQ(TextureType::_2DArray, nextIndex.type); |
| 113 | EXPECT_EQ(TextureTarget::_2DArray, nextIndex.target); |
Jamie Madill | ef4ac5b | 2014-09-29 10:46:11 -0400 | [diff] [blame] | 114 | EXPECT_EQ(mip, nextIndex.mipIndex); |
| 115 | EXPECT_EQ(layer, nextIndex.layerIndex); |
| 116 | EXPECT_TRUE(nextIndex.hasLayer()); |
| 117 | } |
| 118 | } |
Jamie Madill | 96f4f45 | 2016-09-02 16:20:11 -0400 | [diff] [blame] | 119 | |
| 120 | EXPECT_FALSE(iter.hasNext()); |
Jamie Madill | ef4ac5b | 2014-09-29 10:46:11 -0400 | [diff] [blame] | 121 | } |
| 122 | |
| 123 | } // namespace |