| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "gpu/command_buffer/common/gles2_cmd_utils.h" | 5 #include "gpu/command_buffer/common/gles2_cmd_utils.h" |
| 6 | 6 |
| 7 #include <limits> | 7 #include <limits> |
| 8 #include <GLES2/gl2.h> | 8 #include <GLES2/gl2.h> |
| 9 #include <GLES2/gl2ext.h> | 9 #include <GLES2/gl2ext.h> |
| 10 #include <GLES2/gl2extchromium.h> | 10 #include <GLES2/gl2extchromium.h> |
| 11 | 11 |
| 12 #include "testing/gtest/include/gtest/gtest.h" | 12 #include "testing/gtest/include/gtest/gtest.h" |
| 13 | 13 |
| 14 namespace gpu { | 14 namespace gpu { |
| 15 namespace gles2 { | 15 namespace gles2 { |
| 16 | 16 |
| 17 class GLES2UtilTest : public testing:: Test { | 17 class GLES2UtilTest : public testing:: Test { |
| 18 protected: | 18 protected: |
| 19 GLES2Util util_; | 19 GLES2Util util_; |
| 20 }; | 20 }; |
| 21 | 21 |
| 22 TEST_F(GLES2UtilTest, SafeMultiplyUint32) { | 22 TEST_F(GLES2UtilTest, SafeMultiplyUint32) { |
| 23 uint32 result = 0; | 23 uint32_t result = 0; |
| 24 EXPECT_TRUE(SafeMultiplyUint32(2u, 3u, &result)); | 24 EXPECT_TRUE(SafeMultiplyUint32(2u, 3u, &result)); |
| 25 EXPECT_EQ(6u, result); | 25 EXPECT_EQ(6u, result); |
| 26 EXPECT_FALSE(SafeMultiplyUint32(0x80000000u, 2u, &result)); | 26 EXPECT_FALSE(SafeMultiplyUint32(0x80000000u, 2u, &result)); |
| 27 EXPECT_EQ(0u, result); | 27 EXPECT_EQ(0u, result); |
| 28 EXPECT_TRUE(SafeMultiplyUint32(0x2u, 0x7FFFFFFFu, &result)); | 28 EXPECT_TRUE(SafeMultiplyUint32(0x2u, 0x7FFFFFFFu, &result)); |
| 29 EXPECT_EQ(0xFFFFFFFEu, result); | 29 EXPECT_EQ(0xFFFFFFFEu, result); |
| 30 EXPECT_FALSE(SafeMultiplyUint32(2u, 0x80000000u, &result)); | 30 EXPECT_FALSE(SafeMultiplyUint32(2u, 0x80000000u, &result)); |
| 31 EXPECT_EQ(0u, result); | 31 EXPECT_EQ(0u, result); |
| 32 } | 32 } |
| 33 | 33 |
| 34 TEST_F(GLES2UtilTest, SafeAddUint32) { | 34 TEST_F(GLES2UtilTest, SafeAddUint32) { |
| 35 uint32 result = 0; | 35 uint32_t result = 0; |
| 36 EXPECT_TRUE(SafeAddUint32(2u, 3u, &result)); | 36 EXPECT_TRUE(SafeAddUint32(2u, 3u, &result)); |
| 37 EXPECT_EQ(5u, result); | 37 EXPECT_EQ(5u, result); |
| 38 EXPECT_FALSE(SafeAddUint32(0x80000000u, 0x80000000u, &result)); | 38 EXPECT_FALSE(SafeAddUint32(0x80000000u, 0x80000000u, &result)); |
| 39 EXPECT_EQ(0u, result); | 39 EXPECT_EQ(0u, result); |
| 40 EXPECT_TRUE(SafeAddUint32(0xFFFFFFFEu, 0x1u, &result)); | 40 EXPECT_TRUE(SafeAddUint32(0xFFFFFFFEu, 0x1u, &result)); |
| 41 EXPECT_EQ(0xFFFFFFFFu, result); | 41 EXPECT_EQ(0xFFFFFFFFu, result); |
| 42 EXPECT_FALSE(SafeAddUint32(0xFFFFFFFEu, 0x2u, &result)); | 42 EXPECT_FALSE(SafeAddUint32(0xFFFFFFFEu, 0x2u, &result)); |
| 43 EXPECT_EQ(0u, result); | 43 EXPECT_EQ(0u, result); |
| 44 EXPECT_TRUE(SafeAddUint32(0x1u, 0xFFFFFFFEu, &result)); | 44 EXPECT_TRUE(SafeAddUint32(0x1u, 0xFFFFFFFEu, &result)); |
| 45 EXPECT_EQ(0xFFFFFFFFu, result); | 45 EXPECT_EQ(0xFFFFFFFFu, result); |
| 46 EXPECT_FALSE(SafeAddUint32(0x2u, 0xFFFFFFFEu, &result)); | 46 EXPECT_FALSE(SafeAddUint32(0x2u, 0xFFFFFFFEu, &result)); |
| 47 EXPECT_EQ(0u, result); | 47 EXPECT_EQ(0u, result); |
| 48 } | 48 } |
| 49 | 49 |
| 50 TEST_F(GLES2UtilTest, SafeAddInt32) { | 50 TEST_F(GLES2UtilTest, SafeAddInt32) { |
| 51 int32 result = 0; | 51 int32_t result = 0; |
| 52 const int32 kMax = std::numeric_limits<int32>::max(); | 52 const int32_t kMax = std::numeric_limits<int32_t>::max(); |
| 53 const int32 kMin = std::numeric_limits<int32>::min(); | 53 const int32_t kMin = std::numeric_limits<int32_t>::min(); |
| 54 EXPECT_TRUE(SafeAddInt32(2, 3, &result)); | 54 EXPECT_TRUE(SafeAddInt32(2, 3, &result)); |
| 55 EXPECT_EQ(5, result); | 55 EXPECT_EQ(5, result); |
| 56 EXPECT_FALSE(SafeAddInt32(kMax, 1, &result)); | 56 EXPECT_FALSE(SafeAddInt32(kMax, 1, &result)); |
| 57 EXPECT_EQ(0, result); | 57 EXPECT_EQ(0, result); |
| 58 EXPECT_TRUE(SafeAddInt32(kMin + 1, -1, &result)); | 58 EXPECT_TRUE(SafeAddInt32(kMin + 1, -1, &result)); |
| 59 EXPECT_EQ(kMin, result); | 59 EXPECT_EQ(kMin, result); |
| 60 EXPECT_FALSE(SafeAddInt32(kMin, -1, &result)); | 60 EXPECT_FALSE(SafeAddInt32(kMin, -1, &result)); |
| 61 EXPECT_EQ(0, result); | 61 EXPECT_EQ(0, result); |
| 62 EXPECT_TRUE(SafeAddInt32(kMax - 1, 1, &result)); | 62 EXPECT_TRUE(SafeAddInt32(kMax - 1, 1, &result)); |
| 63 EXPECT_EQ(kMax, result); | 63 EXPECT_EQ(kMax, result); |
| (...skipping 18 matching lines...) Expand all Loading... |
| 82 util_.set_num_shader_binary_formats(2); | 82 util_.set_num_shader_binary_formats(2); |
| 83 | 83 |
| 84 EXPECT_EQ(1, util_.GLGetNumValuesReturned(GL_COMPRESSED_TEXTURE_FORMATS)); | 84 EXPECT_EQ(1, util_.GLGetNumValuesReturned(GL_COMPRESSED_TEXTURE_FORMATS)); |
| 85 EXPECT_EQ(2, util_.GLGetNumValuesReturned(GL_SHADER_BINARY_FORMATS)); | 85 EXPECT_EQ(2, util_.GLGetNumValuesReturned(GL_SHADER_BINARY_FORMATS)); |
| 86 | 86 |
| 87 EXPECT_EQ(1, util_.num_compressed_texture_formats()); | 87 EXPECT_EQ(1, util_.num_compressed_texture_formats()); |
| 88 EXPECT_EQ(2, util_.num_shader_binary_formats()); | 88 EXPECT_EQ(2, util_.num_shader_binary_formats()); |
| 89 } | 89 } |
| 90 | 90 |
| 91 TEST_F(GLES2UtilTest, ComputeImageDataSizesFormats) { | 91 TEST_F(GLES2UtilTest, ComputeImageDataSizesFormats) { |
| 92 const uint32 kWidth = 16; | 92 const uint32_t kWidth = 16; |
| 93 const uint32 kHeight = 12; | 93 const uint32_t kHeight = 12; |
| 94 uint32 size; | 94 uint32_t size; |
| 95 uint32 unpadded_row_size; | 95 uint32_t unpadded_row_size; |
| 96 uint32 padded_row_size; | 96 uint32_t padded_row_size; |
| 97 EXPECT_TRUE(GLES2Util::ComputeImageDataSizes( | 97 EXPECT_TRUE(GLES2Util::ComputeImageDataSizes( |
| 98 kWidth, kHeight, GL_RGB, GL_UNSIGNED_BYTE, 1, &size, &unpadded_row_size, | 98 kWidth, kHeight, GL_RGB, GL_UNSIGNED_BYTE, 1, &size, &unpadded_row_size, |
| 99 &padded_row_size)); | 99 &padded_row_size)); |
| 100 EXPECT_EQ(kWidth * kHeight * 3, size); | 100 EXPECT_EQ(kWidth * kHeight * 3, size); |
| 101 EXPECT_EQ(kWidth * 3, padded_row_size); | 101 EXPECT_EQ(kWidth * 3, padded_row_size); |
| 102 EXPECT_EQ(padded_row_size, unpadded_row_size); | 102 EXPECT_EQ(padded_row_size, unpadded_row_size); |
| 103 EXPECT_TRUE(GLES2Util::ComputeImageDataSizes( | 103 EXPECT_TRUE(GLES2Util::ComputeImageDataSizes( |
| 104 kWidth, kHeight, GL_RGBA, GL_UNSIGNED_BYTE, 1, &size, &unpadded_row_size, | 104 kWidth, kHeight, GL_RGBA, GL_UNSIGNED_BYTE, 1, &size, &unpadded_row_size, |
| 105 &padded_row_size)); | 105 &padded_row_size)); |
| 106 EXPECT_EQ(kWidth * kHeight * 4, size); | 106 EXPECT_EQ(kWidth * kHeight * 4, size); |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 139 EXPECT_TRUE(GLES2Util::ComputeImageDataSizes( | 139 EXPECT_TRUE(GLES2Util::ComputeImageDataSizes( |
| 140 kWidth, kHeight, GL_DEPTH_STENCIL_OES, GL_UNSIGNED_INT_24_8_OES, 1, | 140 kWidth, kHeight, GL_DEPTH_STENCIL_OES, GL_UNSIGNED_INT_24_8_OES, 1, |
| 141 &size, &unpadded_row_size, | 141 &size, &unpadded_row_size, |
| 142 &padded_row_size)); | 142 &padded_row_size)); |
| 143 EXPECT_EQ(kWidth * kHeight * 4, size); | 143 EXPECT_EQ(kWidth * kHeight * 4, size); |
| 144 EXPECT_EQ(kWidth * 4, padded_row_size); | 144 EXPECT_EQ(kWidth * 4, padded_row_size); |
| 145 EXPECT_EQ(padded_row_size, unpadded_row_size); | 145 EXPECT_EQ(padded_row_size, unpadded_row_size); |
| 146 } | 146 } |
| 147 | 147 |
| 148 TEST_F(GLES2UtilTest, ComputeImageDataSizeTypes) { | 148 TEST_F(GLES2UtilTest, ComputeImageDataSizeTypes) { |
| 149 const uint32 kWidth = 16; | 149 const uint32_t kWidth = 16; |
| 150 const uint32 kHeight = 12; | 150 const uint32_t kHeight = 12; |
| 151 uint32 size; | 151 uint32_t size; |
| 152 uint32 unpadded_row_size; | 152 uint32_t unpadded_row_size; |
| 153 uint32 padded_row_size; | 153 uint32_t padded_row_size; |
| 154 EXPECT_TRUE(GLES2Util::ComputeImageDataSizes( | 154 EXPECT_TRUE(GLES2Util::ComputeImageDataSizes( |
| 155 kWidth, kHeight, GL_RGBA, GL_UNSIGNED_BYTE, 1, &size, &unpadded_row_size, | 155 kWidth, kHeight, GL_RGBA, GL_UNSIGNED_BYTE, 1, &size, &unpadded_row_size, |
| 156 &padded_row_size)); | 156 &padded_row_size)); |
| 157 EXPECT_EQ(kWidth * kHeight * 4, size); | 157 EXPECT_EQ(kWidth * kHeight * 4, size); |
| 158 EXPECT_EQ(kWidth * 4, padded_row_size); | 158 EXPECT_EQ(kWidth * 4, padded_row_size); |
| 159 EXPECT_EQ(padded_row_size, unpadded_row_size); | 159 EXPECT_EQ(padded_row_size, unpadded_row_size); |
| 160 EXPECT_TRUE(GLES2Util::ComputeImageDataSizes( | 160 EXPECT_TRUE(GLES2Util::ComputeImageDataSizes( |
| 161 kWidth, kHeight, GL_RGBA, GL_UNSIGNED_SHORT_4_4_4_4, 1, &size, | 161 kWidth, kHeight, GL_RGBA, GL_UNSIGNED_SHORT_4_4_4_4, 1, &size, |
| 162 &unpadded_row_size, &padded_row_size)); | 162 &unpadded_row_size, &padded_row_size)); |
| 163 EXPECT_EQ(kWidth * kHeight * 2, size); | 163 EXPECT_EQ(kWidth * kHeight * 2, size); |
| (...skipping 13 matching lines...) Expand all Loading... |
| 177 EXPECT_EQ(padded_row_size, unpadded_row_size); | 177 EXPECT_EQ(padded_row_size, unpadded_row_size); |
| 178 EXPECT_TRUE(GLES2Util::ComputeImageDataSizes( | 178 EXPECT_TRUE(GLES2Util::ComputeImageDataSizes( |
| 179 kWidth, kHeight, GL_DEPTH_COMPONENT, GL_UNSIGNED_INT, 1, &size, | 179 kWidth, kHeight, GL_DEPTH_COMPONENT, GL_UNSIGNED_INT, 1, &size, |
| 180 &unpadded_row_size, &padded_row_size)); | 180 &unpadded_row_size, &padded_row_size)); |
| 181 EXPECT_EQ(kWidth * kHeight * 4, size); | 181 EXPECT_EQ(kWidth * kHeight * 4, size); |
| 182 EXPECT_EQ(kWidth * 4, padded_row_size); | 182 EXPECT_EQ(kWidth * 4, padded_row_size); |
| 183 EXPECT_EQ(padded_row_size, unpadded_row_size); | 183 EXPECT_EQ(padded_row_size, unpadded_row_size); |
| 184 } | 184 } |
| 185 | 185 |
| 186 TEST_F(GLES2UtilTest, ComputeImageDataSizesUnpackAlignment) { | 186 TEST_F(GLES2UtilTest, ComputeImageDataSizesUnpackAlignment) { |
| 187 const uint32 kWidth = 19; | 187 const uint32_t kWidth = 19; |
| 188 const uint32 kHeight = 12; | 188 const uint32_t kHeight = 12; |
| 189 uint32 size; | 189 uint32_t size; |
| 190 uint32 unpadded_row_size; | 190 uint32_t unpadded_row_size; |
| 191 uint32 padded_row_size; | 191 uint32_t padded_row_size; |
| 192 EXPECT_TRUE(GLES2Util::ComputeImageDataSizes( | 192 EXPECT_TRUE(GLES2Util::ComputeImageDataSizes( |
| 193 kWidth, kHeight, GL_RGB, GL_UNSIGNED_BYTE, 1, &size, &unpadded_row_size, | 193 kWidth, kHeight, GL_RGB, GL_UNSIGNED_BYTE, 1, &size, &unpadded_row_size, |
| 194 &padded_row_size)); | 194 &padded_row_size)); |
| 195 EXPECT_EQ(kWidth * kHeight * 3, size); | 195 EXPECT_EQ(kWidth * kHeight * 3, size); |
| 196 EXPECT_EQ(kWidth * 3, unpadded_row_size); | 196 EXPECT_EQ(kWidth * 3, unpadded_row_size); |
| 197 EXPECT_EQ(kWidth * 3, padded_row_size); | 197 EXPECT_EQ(kWidth * 3, padded_row_size); |
| 198 EXPECT_TRUE(GLES2Util::ComputeImageDataSizes( | 198 EXPECT_TRUE(GLES2Util::ComputeImageDataSizes( |
| 199 kWidth, kHeight, GL_RGB, GL_UNSIGNED_BYTE, 2, &size, &unpadded_row_size, | 199 kWidth, kHeight, GL_RGB, GL_UNSIGNED_BYTE, 2, &size, &unpadded_row_size, |
| 200 &padded_row_size)); | 200 &padded_row_size)); |
| 201 EXPECT_EQ((kWidth * 3 + 1) * (kHeight - 1) + | 201 EXPECT_EQ((kWidth * 3 + 1) * (kHeight - 1) + |
| (...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 297 CheckParseUniformName("u_name[020]", true, 6u, 20, true); | 297 CheckParseUniformName("u_name[020]", true, 6u, 20, true); |
| 298 CheckParseUniformName("u_name[0][0]", true, 9u, 0, true); | 298 CheckParseUniformName("u_name[0][0]", true, 9u, 0, true); |
| 299 CheckParseUniformName("u_name[3][2]", true, 9u, 2, true); | 299 CheckParseUniformName("u_name[3][2]", true, 9u, 2, true); |
| 300 CheckParseUniformName("u_name[03][02]", true, 10u, 2, true); | 300 CheckParseUniformName("u_name[03][02]", true, 10u, 2, true); |
| 301 CheckParseUniformName("u_name[30][20]", true, 10u, 20, true); | 301 CheckParseUniformName("u_name[30][20]", true, 10u, 20, true); |
| 302 CheckParseUniformName("u_name[030][020]", true, 11u, 20, true); | 302 CheckParseUniformName("u_name[030][020]", true, 11u, 20, true); |
| 303 } | 303 } |
| 304 | 304 |
| 305 } // namespace gles2 | 305 } // namespace gles2 |
| 306 } // namespace gpu | 306 } // namespace gpu |
| OLD | NEW |