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/service/gles2_cmd_decoder.h" | 5 #include "gpu/command_buffer/service/gles2_cmd_decoder.h" |
6 | 6 |
7 #include "base/command_line.h" | 7 #include "base/command_line.h" |
8 #include "base/strings/string_number_conversions.h" | 8 #include "base/strings/string_number_conversions.h" |
9 #include "gpu/command_buffer/common/gles2_cmd_format.h" | 9 #include "gpu/command_buffer/common/gles2_cmd_format.h" |
10 #include "gpu/command_buffer/common/gles2_cmd_utils.h" | 10 #include "gpu/command_buffer/common/gles2_cmd_utils.h" |
(...skipping 1855 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1866 EXPECT_EQ(GL_OUT_OF_MEMORY, GetGLError()); | 1866 EXPECT_EQ(GL_OUT_OF_MEMORY, GetGLError()); |
1867 EXPECT_FALSE(texture->GetLevelSize(GL_TEXTURE_2D, 2, &width, &height)); | 1867 EXPECT_FALSE(texture->GetLevelSize(GL_TEXTURE_2D, 2, &width, &height)); |
1868 } | 1868 } |
1869 | 1869 |
1870 TEST_F(GLES2DecoderTest, GenerateMipmapClearsUnclearedTexture) { | 1870 TEST_F(GLES2DecoderTest, GenerateMipmapClearsUnclearedTexture) { |
1871 EXPECT_CALL(*gl_, GenerateMipmapEXT(_)) | 1871 EXPECT_CALL(*gl_, GenerateMipmapEXT(_)) |
1872 .Times(0); | 1872 .Times(0); |
1873 DoBindTexture(GL_TEXTURE_2D, client_texture_id_, kServiceTextureId); | 1873 DoBindTexture(GL_TEXTURE_2D, client_texture_id_, kServiceTextureId); |
1874 DoTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 2, 2, 0, GL_RGBA, GL_UNSIGNED_BYTE, | 1874 DoTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 2, 2, 0, GL_RGBA, GL_UNSIGNED_BYTE, |
1875 0, 0); | 1875 0, 0); |
1876 SetupClearTextureExpections( | 1876 SetupClearTextureExpectations( |
1877 kServiceTextureId, kServiceTextureId, GL_TEXTURE_2D, GL_TEXTURE_2D, | 1877 kServiceTextureId, kServiceTextureId, GL_TEXTURE_2D, GL_TEXTURE_2D, |
1878 0, GL_RGBA, GL_UNSIGNED_BYTE, 2, 2); | 1878 0, GL_RGBA, GL_RGBA, GL_UNSIGNED_BYTE, 2, 2); |
1879 EXPECT_CALL(*gl_, TexParameteri( | 1879 EXPECT_CALL(*gl_, TexParameteri( |
1880 GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST_MIPMAP_NEAREST)) | 1880 GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST_MIPMAP_NEAREST)) |
1881 .Times(1) | 1881 .Times(1) |
1882 .RetiresOnSaturation(); | 1882 .RetiresOnSaturation(); |
1883 EXPECT_CALL(*gl_, GenerateMipmapEXT(GL_TEXTURE_2D)); | 1883 EXPECT_CALL(*gl_, GenerateMipmapEXT(GL_TEXTURE_2D)); |
1884 EXPECT_CALL(*gl_, TexParameteri( | 1884 EXPECT_CALL(*gl_, TexParameteri( |
1885 GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST_MIPMAP_LINEAR)) | 1885 GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST_MIPMAP_LINEAR)) |
1886 .Times(1) | 1886 .Times(1) |
1887 .RetiresOnSaturation(); | 1887 .RetiresOnSaturation(); |
1888 EXPECT_CALL(*gl_, GetError()) | 1888 EXPECT_CALL(*gl_, GetError()) |
(...skipping 2700 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4589 if (ii == 0) { | 4589 if (ii == 0) { |
4590 EXPECT_CALL(*gl_, TexImage2D( | 4590 EXPECT_CALL(*gl_, TexImage2D( |
4591 GL_TEXTURE_2D, 0, GL_RGBA, kWidth, kHeight, 0, GL_RGBA, | 4591 GL_TEXTURE_2D, 0, GL_RGBA, kWidth, kHeight, 0, GL_RGBA, |
4592 GL_UNSIGNED_BYTE, _)) | 4592 GL_UNSIGNED_BYTE, _)) |
4593 .Times(1) | 4593 .Times(1) |
4594 .RetiresOnSaturation(); | 4594 .RetiresOnSaturation(); |
4595 cmd.Init( | 4595 cmd.Init( |
4596 GL_TEXTURE_2D, 0, GL_RGBA, kWidth, kHeight, 0, GL_RGBA, | 4596 GL_TEXTURE_2D, 0, GL_RGBA, kWidth, kHeight, 0, GL_RGBA, |
4597 GL_UNSIGNED_BYTE, kSharedMemoryId, kSharedMemoryOffset); | 4597 GL_UNSIGNED_BYTE, kSharedMemoryId, kSharedMemoryOffset); |
4598 } else { | 4598 } else { |
4599 SetupClearTextureExpections( | 4599 SetupClearTextureExpectations( |
4600 kServiceTextureId, kServiceTextureId, GL_TEXTURE_2D, GL_TEXTURE_2D, | 4600 kServiceTextureId, kServiceTextureId, GL_TEXTURE_2D, GL_TEXTURE_2D, |
4601 0, GL_RGBA, GL_UNSIGNED_BYTE, kWidth, kHeight); | 4601 0, GL_RGBA, GL_RGBA, GL_UNSIGNED_BYTE, kWidth, kHeight); |
4602 cmd.Init( | 4602 cmd.Init( |
4603 GL_TEXTURE_2D, 0, GL_RGBA, kWidth, kHeight, 0, GL_RGBA, | 4603 GL_TEXTURE_2D, 0, GL_RGBA, kWidth, kHeight, 0, GL_RGBA, |
4604 GL_UNSIGNED_BYTE, 0, 0); | 4604 GL_UNSIGNED_BYTE, 0, 0); |
4605 } | 4605 } |
4606 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 4606 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
4607 EXPECT_CALL(*gl_, TexSubImage2D( | 4607 EXPECT_CALL(*gl_, TexSubImage2D( |
4608 GL_TEXTURE_2D, 0, 0, 0, kWidth, kHeight - 1, GL_RGBA, GL_UNSIGNED_BYTE, | 4608 GL_TEXTURE_2D, 0, 0, 0, kWidth, kHeight - 1, GL_RGBA, GL_UNSIGNED_BYTE, |
4609 shared_memory_address_)) | 4609 shared_memory_address_)) |
4610 .Times(1) | 4610 .Times(1) |
4611 .RetiresOnSaturation(); | 4611 .RetiresOnSaturation(); |
(...skipping 1295 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5907 const uint32 kBadBucketId = 123; | 5907 const uint32 kBadBucketId = 123; |
5908 RequestExtensionCHROMIUM cmd; | 5908 RequestExtensionCHROMIUM cmd; |
5909 cmd.Init(kBadBucketId); | 5909 cmd.Init(kBadBucketId); |
5910 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); | 5910 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); |
5911 } | 5911 } |
5912 | 5912 |
5913 TEST_F(GLES2DecoderTest, TexSubImage2DClearsAfterTexImage2DNULL) { | 5913 TEST_F(GLES2DecoderTest, TexSubImage2DClearsAfterTexImage2DNULL) { |
5914 DoBindTexture(GL_TEXTURE_2D, client_texture_id_, kServiceTextureId); | 5914 DoBindTexture(GL_TEXTURE_2D, client_texture_id_, kServiceTextureId); |
5915 DoTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 2, 2, 0, GL_RGBA, GL_UNSIGNED_BYTE, | 5915 DoTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 2, 2, 0, GL_RGBA, GL_UNSIGNED_BYTE, |
5916 0, 0); | 5916 0, 0); |
5917 SetupClearTextureExpections( | 5917 SetupClearTextureExpectations( |
5918 kServiceTextureId, kServiceTextureId, GL_TEXTURE_2D, GL_TEXTURE_2D, | 5918 kServiceTextureId, kServiceTextureId, GL_TEXTURE_2D, GL_TEXTURE_2D, |
5919 0, GL_RGBA, GL_UNSIGNED_BYTE, 2, 2); | 5919 0, GL_RGBA, GL_RGBA, GL_UNSIGNED_BYTE, 2, 2); |
5920 EXPECT_CALL(*gl_, TexSubImage2D( | 5920 EXPECT_CALL(*gl_, TexSubImage2D( |
5921 GL_TEXTURE_2D, 0, 1, 1, 1, 1, GL_RGBA, GL_UNSIGNED_BYTE, | 5921 GL_TEXTURE_2D, 0, 1, 1, 1, 1, GL_RGBA, GL_UNSIGNED_BYTE, |
5922 shared_memory_address_)) | 5922 shared_memory_address_)) |
5923 .Times(1) | 5923 .Times(1) |
5924 .RetiresOnSaturation(); | 5924 .RetiresOnSaturation(); |
5925 TexSubImage2D cmd; | 5925 TexSubImage2D cmd; |
5926 cmd.Init( | 5926 cmd.Init( |
5927 GL_TEXTURE_2D, 0, 1, 1, 1, 1, GL_RGBA, GL_UNSIGNED_BYTE, | 5927 GL_TEXTURE_2D, 0, 1, 1, 1, 1, GL_RGBA, GL_UNSIGNED_BYTE, |
5928 kSharedMemoryId, kSharedMemoryOffset, GL_FALSE); | 5928 kSharedMemoryId, kSharedMemoryOffset, GL_FALSE); |
5929 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 5929 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6030 // Put in data (so it should be marked as cleared) | 6030 // Put in data (so it should be marked as cleared) |
6031 DoTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 2, 2, 0, GL_RGBA, GL_UNSIGNED_BYTE, | 6031 DoTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 2, 2, 0, GL_RGBA, GL_UNSIGNED_BYTE, |
6032 kSharedMemoryId, kSharedMemoryOffset); | 6032 kSharedMemoryId, kSharedMemoryOffset); |
6033 // Put in no data. | 6033 // Put in no data. |
6034 TexImage2D tex_cmd; | 6034 TexImage2D tex_cmd; |
6035 tex_cmd.Init( | 6035 tex_cmd.Init( |
6036 GL_TEXTURE_2D, 0, GL_RGBA, 2, 2, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0, 0); | 6036 GL_TEXTURE_2D, 0, GL_RGBA, 2, 2, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0, 0); |
6037 // It won't actually call TexImage2D, just mark it as uncleared. | 6037 // It won't actually call TexImage2D, just mark it as uncleared. |
6038 EXPECT_EQ(error::kNoError, ExecuteCmd(tex_cmd)); | 6038 EXPECT_EQ(error::kNoError, ExecuteCmd(tex_cmd)); |
6039 // Next call to TexSubImage2d should clear. | 6039 // Next call to TexSubImage2d should clear. |
6040 SetupClearTextureExpections( | 6040 SetupClearTextureExpectations( |
6041 kServiceTextureId, kServiceTextureId, GL_TEXTURE_2D, GL_TEXTURE_2D, | 6041 kServiceTextureId, kServiceTextureId, GL_TEXTURE_2D, GL_TEXTURE_2D, |
6042 0, GL_RGBA, GL_UNSIGNED_BYTE, 2, 2); | 6042 0, GL_RGBA, GL_RGBA, GL_UNSIGNED_BYTE, 2, 2); |
6043 EXPECT_CALL(*gl_, TexSubImage2D( | 6043 EXPECT_CALL(*gl_, TexSubImage2D( |
6044 GL_TEXTURE_2D, 0, 1, 1, 1, 1, GL_RGBA, GL_UNSIGNED_BYTE, | 6044 GL_TEXTURE_2D, 0, 1, 1, 1, 1, GL_RGBA, GL_UNSIGNED_BYTE, |
6045 shared_memory_address_)) | 6045 shared_memory_address_)) |
6046 .Times(1) | 6046 .Times(1) |
6047 .RetiresOnSaturation(); | 6047 .RetiresOnSaturation(); |
6048 TexSubImage2D cmd; | 6048 TexSubImage2D cmd; |
6049 cmd.Init( | 6049 cmd.Init( |
6050 GL_TEXTURE_2D, 0, 1, 1, 1, 1, GL_RGBA, GL_UNSIGNED_BYTE, | 6050 GL_TEXTURE_2D, 0, 1, 1, 1, 1, GL_RGBA, GL_UNSIGNED_BYTE, |
6051 kSharedMemoryId, kSharedMemoryOffset, GL_FALSE); | 6051 kSharedMemoryId, kSharedMemoryOffset, GL_FALSE); |
6052 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 6052 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
6053 } | 6053 } |
6054 | 6054 |
6055 TEST_F(GLES2DecoderWithShaderTest, DrawArraysClearsAfterTexImage2DNULL) { | 6055 TEST_F(GLES2DecoderWithShaderTest, DrawArraysClearsAfterTexImage2DNULL) { |
6056 SetupAllNeededVertexBuffers(); | 6056 SetupAllNeededVertexBuffers(); |
6057 DoBindTexture(GL_TEXTURE_2D, client_texture_id_, kServiceTextureId); | 6057 DoBindTexture(GL_TEXTURE_2D, client_texture_id_, kServiceTextureId); |
6058 // Create an uncleared texture with 2 levels. | 6058 // Create an uncleared texture with 2 levels. |
6059 DoTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 2, 2, 0, GL_RGBA, GL_UNSIGNED_BYTE, | 6059 DoTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 2, 2, 0, GL_RGBA, GL_UNSIGNED_BYTE, |
6060 0, 0); | 6060 0, 0); |
6061 DoTexImage2D(GL_TEXTURE_2D, 1, GL_RGBA, 1, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, | 6061 DoTexImage2D(GL_TEXTURE_2D, 1, GL_RGBA, 1, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, |
6062 0, 0); | 6062 0, 0); |
6063 // Expect 2 levels will be cleared. | 6063 // Expect 2 levels will be cleared. |
6064 SetupClearTextureExpections( | 6064 SetupClearTextureExpectations( |
6065 kServiceTextureId, kServiceTextureId, GL_TEXTURE_2D, GL_TEXTURE_2D, | 6065 kServiceTextureId, kServiceTextureId, GL_TEXTURE_2D, GL_TEXTURE_2D, |
6066 0, GL_RGBA, GL_UNSIGNED_BYTE, 2, 2); | 6066 0, GL_RGBA, GL_RGBA, GL_UNSIGNED_BYTE, 2, 2); |
6067 SetupClearTextureExpections( | 6067 SetupClearTextureExpectations( |
6068 kServiceTextureId, kServiceTextureId, GL_TEXTURE_2D, GL_TEXTURE_2D, | 6068 kServiceTextureId, kServiceTextureId, GL_TEXTURE_2D, GL_TEXTURE_2D, |
6069 1, GL_RGBA, GL_UNSIGNED_BYTE, 1, 1); | 6069 1, GL_RGBA, GL_RGBA, GL_UNSIGNED_BYTE, 1, 1); |
6070 SetupExpectationsForApplyingDefaultDirtyState(); | 6070 SetupExpectationsForApplyingDefaultDirtyState(); |
6071 EXPECT_CALL(*gl_, DrawArrays(GL_TRIANGLES, 0, kNumVertices)) | 6071 EXPECT_CALL(*gl_, DrawArrays(GL_TRIANGLES, 0, kNumVertices)) |
6072 .Times(1) | 6072 .Times(1) |
6073 .RetiresOnSaturation(); | 6073 .RetiresOnSaturation(); |
6074 DrawArrays cmd; | 6074 DrawArrays cmd; |
6075 cmd.Init(GL_TRIANGLES, 0, kNumVertices); | 6075 cmd.Init(GL_TRIANGLES, 0, kNumVertices); |
6076 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 6076 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
6077 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 6077 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
6078 | 6078 |
6079 // But not again | 6079 // But not again |
6080 EXPECT_CALL(*gl_, DrawArrays(GL_TRIANGLES, 0, kNumVertices)) | 6080 EXPECT_CALL(*gl_, DrawArrays(GL_TRIANGLES, 0, kNumVertices)) |
6081 .Times(1) | 6081 .Times(1) |
6082 .RetiresOnSaturation(); | 6082 .RetiresOnSaturation(); |
6083 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 6083 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
6084 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 6084 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
6085 } | 6085 } |
6086 | 6086 |
6087 TEST_F(GLES2DecoderWithShaderTest, DrawElementsClearsAfterTexImage2DNULL) { | 6087 TEST_F(GLES2DecoderWithShaderTest, DrawElementsClearsAfterTexImage2DNULL) { |
6088 SetupAllNeededVertexBuffers(); | 6088 SetupAllNeededVertexBuffers(); |
6089 SetupIndexBuffer(); | 6089 SetupIndexBuffer(); |
6090 DoBindTexture(GL_TEXTURE_2D, client_texture_id_, kServiceTextureId); | 6090 DoBindTexture(GL_TEXTURE_2D, client_texture_id_, kServiceTextureId); |
6091 // Create an uncleared texture with 2 levels. | 6091 // Create an uncleared texture with 2 levels. |
6092 DoTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 2, 2, 0, GL_RGBA, GL_UNSIGNED_BYTE, | 6092 DoTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 2, 2, 0, GL_RGBA, GL_UNSIGNED_BYTE, |
6093 0, 0); | 6093 0, 0); |
6094 DoTexImage2D(GL_TEXTURE_2D, 1, GL_RGBA, 1, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, | 6094 DoTexImage2D(GL_TEXTURE_2D, 1, GL_RGBA, 1, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, |
6095 0, 0); | 6095 0, 0); |
6096 // Expect 2 levels will be cleared. | 6096 // Expect 2 levels will be cleared. |
6097 SetupClearTextureExpections( | 6097 SetupClearTextureExpectations( |
6098 kServiceTextureId, kServiceTextureId, GL_TEXTURE_2D, GL_TEXTURE_2D, | 6098 kServiceTextureId, kServiceTextureId, GL_TEXTURE_2D, GL_TEXTURE_2D, |
6099 0, GL_RGBA, GL_UNSIGNED_BYTE, 2, 2); | 6099 0, GL_RGBA, GL_RGBA, GL_UNSIGNED_BYTE, 2, 2); |
6100 SetupClearTextureExpections( | 6100 SetupClearTextureExpectations( |
6101 kServiceTextureId, kServiceTextureId, GL_TEXTURE_2D, GL_TEXTURE_2D, | 6101 kServiceTextureId, kServiceTextureId, GL_TEXTURE_2D, GL_TEXTURE_2D, |
6102 1, GL_RGBA, GL_UNSIGNED_BYTE, 1, 1); | 6102 1, GL_RGBA, GL_RGBA, GL_UNSIGNED_BYTE, 1, 1); |
6103 SetupExpectationsForApplyingDefaultDirtyState(); | 6103 SetupExpectationsForApplyingDefaultDirtyState(); |
6104 | 6104 |
6105 EXPECT_CALL(*gl_, DrawElements(GL_TRIANGLES, kValidIndexRangeCount, | 6105 EXPECT_CALL(*gl_, DrawElements(GL_TRIANGLES, kValidIndexRangeCount, |
6106 GL_UNSIGNED_SHORT, | 6106 GL_UNSIGNED_SHORT, |
6107 BufferOffset(kValidIndexRangeStart * 2))) | 6107 BufferOffset(kValidIndexRangeStart * 2))) |
6108 .Times(1) | 6108 .Times(1) |
6109 .RetiresOnSaturation(); | 6109 .RetiresOnSaturation(); |
6110 DrawElements cmd; | 6110 DrawElements cmd; |
6111 cmd.Init(GL_TRIANGLES, kValidIndexRangeCount, GL_UNSIGNED_SHORT, | 6111 cmd.Init(GL_TRIANGLES, kValidIndexRangeCount, GL_UNSIGNED_SHORT, |
6112 kValidIndexRangeStart * 2); | 6112 kValidIndexRangeStart * 2); |
(...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6242 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 6242 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
6243 | 6243 |
6244 EXPECT_TRUE(texture->SafeToRenderFrom()); | 6244 EXPECT_TRUE(texture->SafeToRenderFrom()); |
6245 } | 6245 } |
6246 | 6246 |
6247 TEST_F(GLES2DecoderTest, CopyTexSubImage2DClearsUnclearedTexture) { | 6247 TEST_F(GLES2DecoderTest, CopyTexSubImage2DClearsUnclearedTexture) { |
6248 DoBindTexture(GL_TEXTURE_2D, client_texture_id_, kServiceTextureId); | 6248 DoBindTexture(GL_TEXTURE_2D, client_texture_id_, kServiceTextureId); |
6249 DoTexImage2D( | 6249 DoTexImage2D( |
6250 GL_TEXTURE_2D, 0, GL_RGBA, 2, 2, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0, 0); | 6250 GL_TEXTURE_2D, 0, GL_RGBA, 2, 2, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0, 0); |
6251 | 6251 |
6252 SetupClearTextureExpections( | 6252 SetupClearTextureExpectations( |
6253 kServiceTextureId, kServiceTextureId, GL_TEXTURE_2D, GL_TEXTURE_2D, | 6253 kServiceTextureId, kServiceTextureId, GL_TEXTURE_2D, GL_TEXTURE_2D, |
6254 0, GL_RGBA, GL_UNSIGNED_BYTE, 2, 2); | 6254 0, GL_RGBA, GL_RGBA, GL_UNSIGNED_BYTE, 2, 2); |
6255 EXPECT_CALL(*gl_, CopyTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, 0, 0, 1, 1)) | 6255 EXPECT_CALL(*gl_, CopyTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, 0, 0, 1, 1)) |
6256 .Times(1) | 6256 .Times(1) |
6257 .RetiresOnSaturation(); | 6257 .RetiresOnSaturation(); |
6258 CopyTexSubImage2D cmd; | 6258 CopyTexSubImage2D cmd; |
6259 cmd.Init(GL_TEXTURE_2D, 0, 0, 0, 0, 0, 1, 1); | 6259 cmd.Init(GL_TEXTURE_2D, 0, 0, 0, 0, 0, 1, 1); |
6260 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 6260 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
6261 } | 6261 } |
6262 | 6262 |
6263 TEST_F(GLES2DecoderManualInitTest, CompressedImage2DMarksTextureAsCleared) { | 6263 TEST_F(GLES2DecoderManualInitTest, CompressedImage2DMarksTextureAsCleared) { |
6264 InitDecoder( | 6264 InitDecoder( |
(...skipping 257 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6522 int32 shm_id = | 6522 int32 shm_id = |
6523 (face == GL_TEXTURE_CUBE_MAP_NEGATIVE_Y) ? 0 : kSharedMemoryId; | 6523 (face == GL_TEXTURE_CUBE_MAP_NEGATIVE_Y) ? 0 : kSharedMemoryId; |
6524 uint32 shm_offset = | 6524 uint32 shm_offset = |
6525 (face == GL_TEXTURE_CUBE_MAP_NEGATIVE_Y) ? 0 : kSharedMemoryOffset; | 6525 (face == GL_TEXTURE_CUBE_MAP_NEGATIVE_Y) ? 0 : kSharedMemoryOffset; |
6526 DoTexImage2D(face, 0, GL_RGBA, 2, 2, 0, GL_RGBA, | 6526 DoTexImage2D(face, 0, GL_RGBA, 2, 2, 0, GL_RGBA, |
6527 GL_UNSIGNED_BYTE, shm_id, shm_offset); | 6527 GL_UNSIGNED_BYTE, shm_id, shm_offset); |
6528 DoTexImage2D(face, 1, GL_RGBA, 1, 1, 0, GL_RGBA, | 6528 DoTexImage2D(face, 1, GL_RGBA, 1, 1, 0, GL_RGBA, |
6529 GL_UNSIGNED_BYTE, shm_id, shm_offset); | 6529 GL_UNSIGNED_BYTE, shm_id, shm_offset); |
6530 } | 6530 } |
6531 // Expect 2 levels will be cleared. | 6531 // Expect 2 levels will be cleared. |
6532 SetupClearTextureExpections( | 6532 SetupClearTextureExpectations( |
6533 kServiceTextureId, kServiceTextureId, GL_TEXTURE_CUBE_MAP, | 6533 kServiceTextureId, kServiceTextureId, GL_TEXTURE_CUBE_MAP, |
6534 GL_TEXTURE_CUBE_MAP_NEGATIVE_Y, 0, GL_RGBA, GL_UNSIGNED_BYTE, 2, 2); | 6534 GL_TEXTURE_CUBE_MAP_NEGATIVE_Y, 0, GL_RGBA, GL_RGBA, GL_UNSIGNED_BYTE, |
6535 SetupClearTextureExpections( | 6535 2, 2); |
| 6536 SetupClearTextureExpectations( |
6536 kServiceTextureId, kServiceTextureId, GL_TEXTURE_CUBE_MAP, | 6537 kServiceTextureId, kServiceTextureId, GL_TEXTURE_CUBE_MAP, |
6537 GL_TEXTURE_CUBE_MAP_NEGATIVE_Y, 1, GL_RGBA, GL_UNSIGNED_BYTE, 1, 1); | 6538 GL_TEXTURE_CUBE_MAP_NEGATIVE_Y, 1, GL_RGBA, GL_RGBA, GL_UNSIGNED_BYTE, |
| 6539 1, 1); |
6538 AddExpectationsForSimulatedAttrib0(kNumVertices, 0); | 6540 AddExpectationsForSimulatedAttrib0(kNumVertices, 0); |
6539 SetupExpectationsForApplyingDefaultDirtyState(); | 6541 SetupExpectationsForApplyingDefaultDirtyState(); |
6540 EXPECT_CALL(*gl_, DrawArrays(GL_TRIANGLES, 0, kNumVertices)) | 6542 EXPECT_CALL(*gl_, DrawArrays(GL_TRIANGLES, 0, kNumVertices)) |
6541 .Times(1) | 6543 .Times(1) |
6542 .RetiresOnSaturation(); | 6544 .RetiresOnSaturation(); |
6543 DrawArrays cmd; | 6545 DrawArrays cmd; |
6544 cmd.Init(GL_TRIANGLES, 0, kNumVertices); | 6546 cmd.Init(GL_TRIANGLES, 0, kNumVertices); |
6545 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 6547 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
6546 } | 6548 } |
6547 | 6549 |
(...skipping 2391 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
8939 DoTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA32F, 16, 17, 0, GL_RGBA, GL_FLOAT, 0, | 8941 DoTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA32F, 16, 17, 0, GL_RGBA, GL_FLOAT, 0, |
8940 0); | 8942 0); |
8941 DoTexImage2D(GL_TEXTURE_2D, 0, GL_LUMINANCE, 16, 17, 0, GL_LUMINANCE, | 8943 DoTexImage2D(GL_TEXTURE_2D, 0, GL_LUMINANCE, 16, 17, 0, GL_LUMINANCE, |
8942 GL_FLOAT, 0, 0); | 8944 GL_FLOAT, 0, 0); |
8943 DoTexImage2D(GL_TEXTURE_2D, 0, GL_ALPHA, 16, 17, 0, GL_ALPHA, GL_FLOAT, | 8945 DoTexImage2D(GL_TEXTURE_2D, 0, GL_ALPHA, 16, 17, 0, GL_ALPHA, GL_FLOAT, |
8944 0, 0); | 8946 0, 0); |
8945 DoTexImage2D(GL_TEXTURE_2D, 0, GL_LUMINANCE_ALPHA, 16, 17, 0, | 8947 DoTexImage2D(GL_TEXTURE_2D, 0, GL_LUMINANCE_ALPHA, 16, 17, 0, |
8946 GL_LUMINANCE_ALPHA, GL_FLOAT, 0, 0); | 8948 GL_LUMINANCE_ALPHA, GL_FLOAT, 0, 0); |
8947 } | 8949 } |
8948 | 8950 |
| 8951 TEST_F(GLES2DecoderManualInitTest, TexSubImage2DFloatOnGLES3) { |
| 8952 InitDecoder("GL_OES_texture_float GL_EXT_color_buffer_float", // extensions |
| 8953 "opengl es 3.0", // gl version |
| 8954 false, // has alpha |
| 8955 false, // has depth |
| 8956 false, // has stencil |
| 8957 false, // request alpha |
| 8958 false, // request depth |
| 8959 false, // request stencil |
| 8960 false); // bind generates resource |
| 8961 const int kWidth = 8; |
| 8962 const int kHeight = 4; |
| 8963 DoBindTexture(GL_TEXTURE_2D, client_texture_id_, kServiceTextureId); |
| 8964 DoTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA32F, kWidth, kHeight, 0, GL_RGBA, |
| 8965 GL_FLOAT, 0, 0); |
| 8966 EXPECT_CALL(*gl_, TexImage2D( |
| 8967 GL_TEXTURE_2D, 0, GL_RGBA32F, kWidth, kHeight, 0, GL_RGBA, GL_FLOAT, |
| 8968 shared_memory_address_)) |
| 8969 .Times(1) |
| 8970 .RetiresOnSaturation(); |
| 8971 TexSubImage2D cmd; |
| 8972 cmd.Init( |
| 8973 GL_TEXTURE_2D, 0, 0, 0, kWidth, kHeight, GL_RGBA, GL_FLOAT, |
| 8974 kSharedMemoryId, kSharedMemoryOffset, GL_FALSE); |
| 8975 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 8976 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 8977 } |
| 8978 |
| 8979 TEST_F(GLES2DecoderManualInitTest, TexSubImage2DFloatDoesClearOnGLES3) { |
| 8980 InitDecoder("GL_OES_texture_float GL_EXT_color_buffer_float", // extensions |
| 8981 "opengl es 3.0", // gl version |
| 8982 false, // has alpha |
| 8983 false, // has depth |
| 8984 false, // has stencil |
| 8985 false, // request alpha |
| 8986 false, // request depth |
| 8987 false, // request stencil |
| 8988 false); // bind generates resource |
| 8989 const int kWidth = 8; |
| 8990 const int kHeight = 4; |
| 8991 DoBindTexture(GL_TEXTURE_2D, client_texture_id_, kServiceTextureId); |
| 8992 DoTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA32F, kWidth, kHeight, 0, GL_RGBA, |
| 8993 GL_FLOAT, 0, 0); |
| 8994 SetupClearTextureExpectations( |
| 8995 kServiceTextureId, kServiceTextureId, GL_TEXTURE_2D, GL_TEXTURE_2D, |
| 8996 0, GL_RGBA32F, GL_RGBA, GL_FLOAT, kWidth, kHeight); |
| 8997 EXPECT_CALL(*gl_, TexSubImage2D( |
| 8998 GL_TEXTURE_2D, 0, 1, 0, kWidth - 1, kHeight, GL_RGBA, GL_FLOAT, |
| 8999 shared_memory_address_)) |
| 9000 .Times(1) |
| 9001 .RetiresOnSaturation(); |
| 9002 TexSubImage2D cmd; |
| 9003 cmd.Init( |
| 9004 GL_TEXTURE_2D, 0, 1, 0, kWidth - 1, kHeight, GL_RGBA, GL_FLOAT, |
| 9005 kSharedMemoryId, kSharedMemoryOffset, GL_FALSE); |
| 9006 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 9007 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 9008 } |
| 9009 |
8949 TEST_F(GLES2DecoderManualInitTest, TexImage2DFloatConvertsFormatDesktop) { | 9010 TEST_F(GLES2DecoderManualInitTest, TexImage2DFloatConvertsFormatDesktop) { |
8950 InitDecoder("GL_ARB_texture_float", // extensions | 9011 InitDecoder("GL_ARB_texture_float", // extensions |
8951 "2.1", // gl version | 9012 "2.1", // gl version |
8952 false, // has alpha | 9013 false, // has alpha |
8953 false, // has depth | 9014 false, // has depth |
8954 false, // has stencil | 9015 false, // has stencil |
8955 false, // request alpha | 9016 false, // request alpha |
8956 false, // request depth | 9017 false, // request depth |
8957 false, // request stencil | 9018 false, // request stencil |
8958 false); // bind generates resource | 9019 false); // bind generates resource |
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
9003 // TODO(gman): TexImage2DImmediate | 9064 // TODO(gman): TexImage2DImmediate |
9004 | 9065 |
9005 // TODO(gman): TexSubImage2DImmediate | 9066 // TODO(gman): TexSubImage2DImmediate |
9006 | 9067 |
9007 // TODO(gman): UseProgram | 9068 // TODO(gman): UseProgram |
9008 | 9069 |
9009 // TODO(gman): SwapBuffers | 9070 // TODO(gman): SwapBuffers |
9010 | 9071 |
9011 } // namespace gles2 | 9072 } // namespace gles2 |
9012 } // namespace gpu | 9073 } // namespace gpu |
OLD | NEW |