| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 909 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 920 .Times(1) | 920 .Times(1) |
| 921 .RetiresOnSaturation(); | 921 .RetiresOnSaturation(); |
| 922 EXPECT_EQ(error::kNoError, ExecuteCmd(depth_cmd)); | 922 EXPECT_EQ(error::kNoError, ExecuteCmd(depth_cmd)); |
| 923 EXPECT_EQ(error::kNoError, ExecuteCmd(stencil_cmd)); | 923 EXPECT_EQ(error::kNoError, ExecuteCmd(stencil_cmd)); |
| 924 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 924 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 925 } | 925 } |
| 926 #endif | 926 #endif |
| 927 | 927 |
| 928 TEST_P(GLES2DecoderManualInitTest, ActualAlphaMatchesRequestedAlpha) { | 928 TEST_P(GLES2DecoderManualInitTest, ActualAlphaMatchesRequestedAlpha) { |
| 929 InitState init; | 929 InitState init; |
| 930 init.gl_version = "3.0"; | |
| 931 init.has_alpha = true; | 930 init.has_alpha = true; |
| 932 init.request_alpha = true; | 931 init.request_alpha = true; |
| 933 init.bind_generates_resource = true; | 932 init.bind_generates_resource = true; |
| 934 InitDecoder(init); | 933 InitDecoder(init); |
| 935 | 934 |
| 936 EXPECT_CALL(*gl_, GetError()) | 935 EXPECT_CALL(*gl_, GetError()) |
| 937 .WillOnce(Return(GL_NO_ERROR)) | 936 .WillOnce(Return(GL_NO_ERROR)) |
| 938 .WillOnce(Return(GL_NO_ERROR)) | 937 .WillOnce(Return(GL_NO_ERROR)) |
| 939 .RetiresOnSaturation(); | 938 .RetiresOnSaturation(); |
| 940 typedef GetIntegerv::Result Result; | 939 typedef GetIntegerv::Result Result; |
| 941 Result* result = static_cast<Result*>(shared_memory_address_); | 940 Result* result = static_cast<Result*>(shared_memory_address_); |
| 942 EXPECT_CALL(*gl_, GetIntegerv(GL_ALPHA_BITS, _)) | 941 EXPECT_CALL(*gl_, GetIntegerv(GL_ALPHA_BITS, _)) |
| 943 .WillOnce(SetArgumentPointee<1>(8)) | 942 .WillOnce(SetArgumentPointee<1>(8)) |
| 944 .RetiresOnSaturation(); | 943 .RetiresOnSaturation(); |
| 945 result->size = 0; | 944 result->size = 0; |
| 946 GetIntegerv cmd2; | 945 GetIntegerv cmd2; |
| 947 cmd2.Init(GL_ALPHA_BITS, shared_memory_id_, shared_memory_offset_); | 946 cmd2.Init(GL_ALPHA_BITS, shared_memory_id_, shared_memory_offset_); |
| 948 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd2)); | 947 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd2)); |
| 949 EXPECT_EQ(decoder_->GetGLES2Util()->GLGetNumValuesReturned(GL_ALPHA_BITS), | 948 EXPECT_EQ(decoder_->GetGLES2Util()->GLGetNumValuesReturned(GL_ALPHA_BITS), |
| 950 result->GetNumResults()); | 949 result->GetNumResults()); |
| 951 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 950 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 952 EXPECT_EQ(8, result->GetData()[0]); | 951 EXPECT_EQ(8, result->GetData()[0]); |
| 953 } | 952 } |
| 954 | 953 |
| 955 TEST_P(GLES2DecoderManualInitTest, ActualAlphaDoesNotMatchRequestedAlpha) { | 954 TEST_P(GLES2DecoderManualInitTest, ActualAlphaDoesNotMatchRequestedAlpha) { |
| 956 InitState init; | 955 InitState init; |
| 957 init.gl_version = "3.0"; | |
| 958 init.has_alpha = true; | 956 init.has_alpha = true; |
| 959 init.bind_generates_resource = true; | 957 init.bind_generates_resource = true; |
| 960 InitDecoder(init); | 958 InitDecoder(init); |
| 961 | 959 |
| 962 EXPECT_CALL(*gl_, GetError()) | 960 EXPECT_CALL(*gl_, GetError()) |
| 963 .WillOnce(Return(GL_NO_ERROR)) | 961 .WillOnce(Return(GL_NO_ERROR)) |
| 964 .WillOnce(Return(GL_NO_ERROR)) | 962 .WillOnce(Return(GL_NO_ERROR)) |
| 965 .RetiresOnSaturation(); | 963 .RetiresOnSaturation(); |
| 966 typedef GetIntegerv::Result Result; | 964 typedef GetIntegerv::Result Result; |
| 967 Result* result = static_cast<Result*>(shared_memory_address_); | 965 Result* result = static_cast<Result*>(shared_memory_address_); |
| 968 EXPECT_CALL(*gl_, GetIntegerv(GL_ALPHA_BITS, _)) | 966 EXPECT_CALL(*gl_, GetIntegerv(GL_ALPHA_BITS, _)) |
| 969 .WillOnce(SetArgumentPointee<1>(8)) | 967 .WillOnce(SetArgumentPointee<1>(8)) |
| 970 .RetiresOnSaturation(); | 968 .RetiresOnSaturation(); |
| 971 result->size = 0; | 969 result->size = 0; |
| 972 GetIntegerv cmd2; | 970 GetIntegerv cmd2; |
| 973 cmd2.Init(GL_ALPHA_BITS, shared_memory_id_, shared_memory_offset_); | 971 cmd2.Init(GL_ALPHA_BITS, shared_memory_id_, shared_memory_offset_); |
| 974 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd2)); | 972 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd2)); |
| 975 EXPECT_EQ(decoder_->GetGLES2Util()->GLGetNumValuesReturned(GL_ALPHA_BITS), | 973 EXPECT_EQ(decoder_->GetGLES2Util()->GLGetNumValuesReturned(GL_ALPHA_BITS), |
| 976 result->GetNumResults()); | 974 result->GetNumResults()); |
| 977 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 975 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 978 EXPECT_EQ(0, result->GetData()[0]); | 976 EXPECT_EQ(0, result->GetData()[0]); |
| 979 } | 977 } |
| 980 | 978 |
| 981 TEST_P(GLES2DecoderManualInitTest, ActualDepthMatchesRequestedDepth) { | 979 TEST_P(GLES2DecoderManualInitTest, ActualDepthMatchesRequestedDepth) { |
| 982 InitState init; | 980 InitState init; |
| 983 init.gl_version = "3.0"; | |
| 984 init.has_depth = true; | 981 init.has_depth = true; |
| 985 init.request_depth = true; | 982 init.request_depth = true; |
| 986 init.bind_generates_resource = true; | 983 init.bind_generates_resource = true; |
| 987 InitDecoder(init); | 984 InitDecoder(init); |
| 988 | 985 |
| 989 EXPECT_CALL(*gl_, GetError()) | 986 EXPECT_CALL(*gl_, GetError()) |
| 990 .WillOnce(Return(GL_NO_ERROR)) | 987 .WillOnce(Return(GL_NO_ERROR)) |
| 991 .WillOnce(Return(GL_NO_ERROR)) | 988 .WillOnce(Return(GL_NO_ERROR)) |
| 992 .RetiresOnSaturation(); | 989 .RetiresOnSaturation(); |
| 993 typedef GetIntegerv::Result Result; | 990 typedef GetIntegerv::Result Result; |
| 994 Result* result = static_cast<Result*>(shared_memory_address_); | 991 Result* result = static_cast<Result*>(shared_memory_address_); |
| 995 EXPECT_CALL(*gl_, GetIntegerv(GL_DEPTH_BITS, _)) | 992 EXPECT_CALL(*gl_, GetIntegerv(GL_DEPTH_BITS, _)) |
| 996 .WillOnce(SetArgumentPointee<1>(24)) | 993 .WillOnce(SetArgumentPointee<1>(24)) |
| 997 .RetiresOnSaturation(); | 994 .RetiresOnSaturation(); |
| 998 result->size = 0; | 995 result->size = 0; |
| 999 GetIntegerv cmd2; | 996 GetIntegerv cmd2; |
| 1000 cmd2.Init(GL_DEPTH_BITS, shared_memory_id_, shared_memory_offset_); | 997 cmd2.Init(GL_DEPTH_BITS, shared_memory_id_, shared_memory_offset_); |
| 1001 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd2)); | 998 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd2)); |
| 1002 EXPECT_EQ(decoder_->GetGLES2Util()->GLGetNumValuesReturned(GL_DEPTH_BITS), | 999 EXPECT_EQ(decoder_->GetGLES2Util()->GLGetNumValuesReturned(GL_DEPTH_BITS), |
| 1003 result->GetNumResults()); | 1000 result->GetNumResults()); |
| 1004 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 1001 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 1005 EXPECT_EQ(24, result->GetData()[0]); | 1002 EXPECT_EQ(24, result->GetData()[0]); |
| 1006 } | 1003 } |
| 1007 | 1004 |
| 1008 TEST_P(GLES2DecoderManualInitTest, ActualDepthDoesNotMatchRequestedDepth) { | 1005 TEST_P(GLES2DecoderManualInitTest, ActualDepthDoesNotMatchRequestedDepth) { |
| 1009 InitState init; | 1006 InitState init; |
| 1010 init.gl_version = "3.0"; | |
| 1011 init.has_depth = true; | 1007 init.has_depth = true; |
| 1012 init.bind_generates_resource = true; | 1008 init.bind_generates_resource = true; |
| 1013 InitDecoder(init); | 1009 InitDecoder(init); |
| 1014 | 1010 |
| 1015 EXPECT_CALL(*gl_, GetError()) | 1011 EXPECT_CALL(*gl_, GetError()) |
| 1016 .WillOnce(Return(GL_NO_ERROR)) | 1012 .WillOnce(Return(GL_NO_ERROR)) |
| 1017 .WillOnce(Return(GL_NO_ERROR)) | 1013 .WillOnce(Return(GL_NO_ERROR)) |
| 1018 .RetiresOnSaturation(); | 1014 .RetiresOnSaturation(); |
| 1019 typedef GetIntegerv::Result Result; | 1015 typedef GetIntegerv::Result Result; |
| 1020 Result* result = static_cast<Result*>(shared_memory_address_); | 1016 Result* result = static_cast<Result*>(shared_memory_address_); |
| 1021 EXPECT_CALL(*gl_, GetIntegerv(GL_DEPTH_BITS, _)) | 1017 EXPECT_CALL(*gl_, GetIntegerv(GL_DEPTH_BITS, _)) |
| 1022 .WillOnce(SetArgumentPointee<1>(24)) | 1018 .WillOnce(SetArgumentPointee<1>(24)) |
| 1023 .RetiresOnSaturation(); | 1019 .RetiresOnSaturation(); |
| 1024 result->size = 0; | 1020 result->size = 0; |
| 1025 GetIntegerv cmd2; | 1021 GetIntegerv cmd2; |
| 1026 cmd2.Init(GL_DEPTH_BITS, shared_memory_id_, shared_memory_offset_); | 1022 cmd2.Init(GL_DEPTH_BITS, shared_memory_id_, shared_memory_offset_); |
| 1027 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd2)); | 1023 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd2)); |
| 1028 EXPECT_EQ(decoder_->GetGLES2Util()->GLGetNumValuesReturned(GL_DEPTH_BITS), | 1024 EXPECT_EQ(decoder_->GetGLES2Util()->GLGetNumValuesReturned(GL_DEPTH_BITS), |
| 1029 result->GetNumResults()); | 1025 result->GetNumResults()); |
| 1030 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 1026 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 1031 EXPECT_EQ(0, result->GetData()[0]); | 1027 EXPECT_EQ(0, result->GetData()[0]); |
| 1032 } | 1028 } |
| 1033 | 1029 |
| 1034 TEST_P(GLES2DecoderManualInitTest, ActualStencilMatchesRequestedStencil) { | 1030 TEST_P(GLES2DecoderManualInitTest, ActualStencilMatchesRequestedStencil) { |
| 1035 InitState init; | 1031 InitState init; |
| 1036 init.gl_version = "3.0"; | |
| 1037 init.has_stencil = true; | 1032 init.has_stencil = true; |
| 1038 init.request_stencil = true; | 1033 init.request_stencil = true; |
| 1039 init.bind_generates_resource = true; | 1034 init.bind_generates_resource = true; |
| 1040 InitDecoder(init); | 1035 InitDecoder(init); |
| 1041 | 1036 |
| 1042 EXPECT_CALL(*gl_, GetError()) | 1037 EXPECT_CALL(*gl_, GetError()) |
| 1043 .WillOnce(Return(GL_NO_ERROR)) | 1038 .WillOnce(Return(GL_NO_ERROR)) |
| 1044 .WillOnce(Return(GL_NO_ERROR)) | 1039 .WillOnce(Return(GL_NO_ERROR)) |
| 1045 .RetiresOnSaturation(); | 1040 .RetiresOnSaturation(); |
| 1046 typedef GetIntegerv::Result Result; | 1041 typedef GetIntegerv::Result Result; |
| 1047 Result* result = static_cast<Result*>(shared_memory_address_); | 1042 Result* result = static_cast<Result*>(shared_memory_address_); |
| 1048 EXPECT_CALL(*gl_, GetIntegerv(GL_STENCIL_BITS, _)) | 1043 EXPECT_CALL(*gl_, GetIntegerv(GL_STENCIL_BITS, _)) |
| 1049 .WillOnce(SetArgumentPointee<1>(8)) | 1044 .WillOnce(SetArgumentPointee<1>(8)) |
| 1050 .RetiresOnSaturation(); | 1045 .RetiresOnSaturation(); |
| 1051 result->size = 0; | 1046 result->size = 0; |
| 1052 GetIntegerv cmd2; | 1047 GetIntegerv cmd2; |
| 1053 cmd2.Init(GL_STENCIL_BITS, shared_memory_id_, shared_memory_offset_); | 1048 cmd2.Init(GL_STENCIL_BITS, shared_memory_id_, shared_memory_offset_); |
| 1054 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd2)); | 1049 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd2)); |
| 1055 EXPECT_EQ(decoder_->GetGLES2Util()->GLGetNumValuesReturned(GL_STENCIL_BITS), | 1050 EXPECT_EQ(decoder_->GetGLES2Util()->GLGetNumValuesReturned(GL_STENCIL_BITS), |
| 1056 result->GetNumResults()); | 1051 result->GetNumResults()); |
| 1057 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 1052 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 1058 EXPECT_EQ(8, result->GetData()[0]); | 1053 EXPECT_EQ(8, result->GetData()[0]); |
| 1059 } | 1054 } |
| 1060 | 1055 |
| 1061 TEST_P(GLES2DecoderManualInitTest, ActualStencilDoesNotMatchRequestedStencil) { | 1056 TEST_P(GLES2DecoderManualInitTest, ActualStencilDoesNotMatchRequestedStencil) { |
| 1062 InitState init; | 1057 InitState init; |
| 1063 init.gl_version = "3.0"; | |
| 1064 init.has_stencil = true; | 1058 init.has_stencil = true; |
| 1065 init.bind_generates_resource = true; | 1059 init.bind_generates_resource = true; |
| 1066 InitDecoder(init); | 1060 InitDecoder(init); |
| 1067 | 1061 |
| 1068 EXPECT_CALL(*gl_, GetError()) | 1062 EXPECT_CALL(*gl_, GetError()) |
| 1069 .WillOnce(Return(GL_NO_ERROR)) | 1063 .WillOnce(Return(GL_NO_ERROR)) |
| 1070 .WillOnce(Return(GL_NO_ERROR)) | 1064 .WillOnce(Return(GL_NO_ERROR)) |
| 1071 .RetiresOnSaturation(); | 1065 .RetiresOnSaturation(); |
| 1072 typedef GetIntegerv::Result Result; | 1066 typedef GetIntegerv::Result Result; |
| 1073 Result* result = static_cast<Result*>(shared_memory_address_); | 1067 Result* result = static_cast<Result*>(shared_memory_address_); |
| (...skipping 323 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1397 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); | 1391 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); |
| 1398 cmd.Init(GL_RENDERBUFFER, GL_RGBA4, 1, TestHelper::kMaxRenderbufferSize + 1); | 1392 cmd.Init(GL_RENDERBUFFER, GL_RGBA4, 1, TestHelper::kMaxRenderbufferSize + 1); |
| 1399 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 1393 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 1400 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); | 1394 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); |
| 1401 } | 1395 } |
| 1402 | 1396 |
| 1403 TEST_P(GLES2DecoderManualInitTest, | 1397 TEST_P(GLES2DecoderManualInitTest, |
| 1404 RenderbufferStorageMultisampleCHROMIUMGLError) { | 1398 RenderbufferStorageMultisampleCHROMIUMGLError) { |
| 1405 InitState init; | 1399 InitState init; |
| 1406 init.extensions = "GL_EXT_framebuffer_multisample"; | 1400 init.extensions = "GL_EXT_framebuffer_multisample"; |
| 1407 init.gl_version = "2.1"; | |
| 1408 init.bind_generates_resource = true; | 1401 init.bind_generates_resource = true; |
| 1409 InitDecoder(init); | 1402 InitDecoder(init); |
| 1410 DoBindRenderbuffer( | 1403 DoBindRenderbuffer( |
| 1411 GL_RENDERBUFFER, client_renderbuffer_id_, kServiceRenderbufferId); | 1404 GL_RENDERBUFFER, client_renderbuffer_id_, kServiceRenderbufferId); |
| 1412 EnsureRenderbufferBound(false); | 1405 EnsureRenderbufferBound(false); |
| 1413 EXPECT_CALL(*gl_, GetError()) | 1406 EXPECT_CALL(*gl_, GetError()) |
| 1414 .WillOnce(Return(GL_NO_ERROR)) | 1407 .WillOnce(Return(GL_NO_ERROR)) |
| 1415 .WillOnce(Return(GL_OUT_OF_MEMORY)) | 1408 .WillOnce(Return(GL_OUT_OF_MEMORY)) |
| 1416 .RetiresOnSaturation(); | 1409 .RetiresOnSaturation(); |
| 1417 EXPECT_CALL( | 1410 EXPECT_CALL( |
| 1418 *gl_, | 1411 *gl_, |
| 1419 RenderbufferStorageMultisampleEXT(GL_RENDERBUFFER, 1, GL_RGBA, 100, 50)) | 1412 RenderbufferStorageMultisampleEXT(GL_RENDERBUFFER, 1, GL_RGBA, 100, 50)) |
| 1420 .Times(1) | 1413 .Times(1) |
| 1421 .RetiresOnSaturation(); | 1414 .RetiresOnSaturation(); |
| 1422 RenderbufferStorageMultisampleCHROMIUM cmd; | 1415 RenderbufferStorageMultisampleCHROMIUM cmd; |
| 1423 cmd.Init(GL_RENDERBUFFER, 1, GL_RGBA4, 100, 50); | 1416 cmd.Init(GL_RENDERBUFFER, 1, GL_RGBA4, 100, 50); |
| 1424 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 1417 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 1425 EXPECT_EQ(GL_OUT_OF_MEMORY, GetGLError()); | 1418 EXPECT_EQ(GL_OUT_OF_MEMORY, GetGLError()); |
| 1426 } | 1419 } |
| 1427 | 1420 |
| 1428 TEST_P(GLES2DecoderManualInitTest, | 1421 TEST_P(GLES2DecoderManualInitTest, |
| 1429 RenderbufferStorageMultisampleCHROMIUMBadArgs) { | 1422 RenderbufferStorageMultisampleCHROMIUMBadArgs) { |
| 1430 InitState init; | 1423 InitState init; |
| 1431 init.extensions = "GL_EXT_framebuffer_multisample"; | 1424 init.extensions = "GL_EXT_framebuffer_multisample"; |
| 1432 init.gl_version = "2.1"; | |
| 1433 init.bind_generates_resource = true; | 1425 init.bind_generates_resource = true; |
| 1434 InitDecoder(init); | 1426 InitDecoder(init); |
| 1435 DoBindRenderbuffer( | 1427 DoBindRenderbuffer( |
| 1436 GL_RENDERBUFFER, client_renderbuffer_id_, kServiceRenderbufferId); | 1428 GL_RENDERBUFFER, client_renderbuffer_id_, kServiceRenderbufferId); |
| 1437 EXPECT_CALL(*gl_, RenderbufferStorageMultisampleEXT(_, _, _, _, _)) | 1429 EXPECT_CALL(*gl_, RenderbufferStorageMultisampleEXT(_, _, _, _, _)) |
| 1438 .Times(0) | 1430 .Times(0) |
| 1439 .RetiresOnSaturation(); | 1431 .RetiresOnSaturation(); |
| 1440 RenderbufferStorageMultisampleCHROMIUM cmd; | 1432 RenderbufferStorageMultisampleCHROMIUM cmd; |
| 1441 cmd.Init(GL_RENDERBUFFER, | 1433 cmd.Init(GL_RENDERBUFFER, |
| 1442 TestHelper::kMaxSamples + 1, | 1434 TestHelper::kMaxSamples + 1, |
| (...skipping 14 matching lines...) Expand all Loading... |
| 1457 GL_RGBA4, | 1449 GL_RGBA4, |
| 1458 1, | 1450 1, |
| 1459 TestHelper::kMaxRenderbufferSize + 1); | 1451 TestHelper::kMaxRenderbufferSize + 1); |
| 1460 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 1452 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 1461 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); | 1453 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); |
| 1462 } | 1454 } |
| 1463 | 1455 |
| 1464 TEST_P(GLES2DecoderManualInitTest, RenderbufferStorageMultisampleCHROMIUM) { | 1456 TEST_P(GLES2DecoderManualInitTest, RenderbufferStorageMultisampleCHROMIUM) { |
| 1465 InitState init; | 1457 InitState init; |
| 1466 init.extensions = "GL_EXT_framebuffer_multisample"; | 1458 init.extensions = "GL_EXT_framebuffer_multisample"; |
| 1467 init.gl_version = "2.1"; | |
| 1468 InitDecoder(init); | 1459 InitDecoder(init); |
| 1469 DoBindRenderbuffer( | 1460 DoBindRenderbuffer( |
| 1470 GL_RENDERBUFFER, client_renderbuffer_id_, kServiceRenderbufferId); | 1461 GL_RENDERBUFFER, client_renderbuffer_id_, kServiceRenderbufferId); |
| 1471 InSequence sequence; | 1462 InSequence sequence; |
| 1472 EnsureRenderbufferBound(false); | 1463 EnsureRenderbufferBound(false); |
| 1473 DoRenderbufferStorageMultisampleCHROMIUM(GL_RENDERBUFFER, | 1464 DoRenderbufferStorageMultisampleCHROMIUM(GL_RENDERBUFFER, |
| 1474 TestHelper::kMaxSamples, | 1465 TestHelper::kMaxSamples, |
| 1475 GL_RGBA4, | 1466 GL_RGBA4, |
| 1476 GL_RGBA, | 1467 GL_RGBA, |
| 1477 TestHelper::kMaxRenderbufferSize, | 1468 TestHelper::kMaxRenderbufferSize, |
| 1478 1); | 1469 1); |
| 1479 } | 1470 } |
| 1480 | 1471 |
| 1481 TEST_P(GLES2DecoderManualInitTest, | 1472 TEST_P(GLES2DecoderManualInitTest, |
| 1482 RenderbufferStorageMultisampleCHROMIUMRebindRenderbuffer) { | 1473 RenderbufferStorageMultisampleCHROMIUMRebindRenderbuffer) { |
| 1483 InitState init; | 1474 InitState init; |
| 1484 init.extensions = "GL_EXT_framebuffer_multisample"; | 1475 init.extensions = "GL_EXT_framebuffer_multisample"; |
| 1485 init.gl_version = "2.1"; | |
| 1486 InitDecoder(init); | 1476 InitDecoder(init); |
| 1487 DoBindRenderbuffer( | 1477 DoBindRenderbuffer( |
| 1488 GL_RENDERBUFFER, client_renderbuffer_id_, kServiceRenderbufferId); | 1478 GL_RENDERBUFFER, client_renderbuffer_id_, kServiceRenderbufferId); |
| 1489 RestoreRenderbufferBindings(); | 1479 RestoreRenderbufferBindings(); |
| 1490 InSequence sequence; | 1480 InSequence sequence; |
| 1491 EnsureRenderbufferBound(true); | 1481 EnsureRenderbufferBound(true); |
| 1492 DoRenderbufferStorageMultisampleCHROMIUM(GL_RENDERBUFFER, | 1482 DoRenderbufferStorageMultisampleCHROMIUM(GL_RENDERBUFFER, |
| 1493 TestHelper::kMaxSamples, | 1483 TestHelper::kMaxSamples, |
| 1494 GL_RGBA4, | 1484 GL_RGBA4, |
| 1495 GL_RGBA, | 1485 GL_RGBA, |
| 1496 TestHelper::kMaxRenderbufferSize, | 1486 TestHelper::kMaxRenderbufferSize, |
| 1497 1); | 1487 1); |
| 1498 } | 1488 } |
| 1499 | 1489 |
| 1500 TEST_P(GLES2DecoderManualInitTest, | 1490 TEST_P(GLES2DecoderManualInitTest, |
| 1501 RenderbufferStorageMultisampleEXTNotSupported) { | 1491 RenderbufferStorageMultisampleEXTNotSupported) { |
| 1502 InitState init; | 1492 InitState init; |
| 1503 init.extensions = "GL_EXT_framebuffer_multisample"; | 1493 init.extensions = "GL_EXT_framebuffer_multisample"; |
| 1504 init.gl_version = "2.1"; | |
| 1505 init.bind_generates_resource = true; | 1494 init.bind_generates_resource = true; |
| 1506 InitDecoder(init); | 1495 InitDecoder(init); |
| 1507 DoBindRenderbuffer( | 1496 DoBindRenderbuffer( |
| 1508 GL_RENDERBUFFER, client_renderbuffer_id_, kServiceRenderbufferId); | 1497 GL_RENDERBUFFER, client_renderbuffer_id_, kServiceRenderbufferId); |
| 1509 InSequence sequence; | 1498 InSequence sequence; |
| 1510 // GL_EXT_framebuffer_multisample uses RenderbufferStorageMultisampleCHROMIUM. | 1499 // GL_EXT_framebuffer_multisample uses RenderbufferStorageMultisampleCHROMIUM. |
| 1511 RenderbufferStorageMultisampleEXT cmd; | 1500 RenderbufferStorageMultisampleEXT cmd; |
| 1512 cmd.Init(GL_RENDERBUFFER, | 1501 cmd.Init(GL_RENDERBUFFER, |
| 1513 TestHelper::kMaxSamples, | 1502 TestHelper::kMaxSamples, |
| 1514 GL_RGBA4, | 1503 GL_RGBA4, |
| (...skipping 264 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1779 result_shm_offset, | 1768 result_shm_offset, |
| 1780 false); | 1769 false); |
| 1781 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 1770 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 1782 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 1771 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 1783 } | 1772 } |
| 1784 | 1773 |
| 1785 TEST_P(GLES2DecoderManualInitTest, | 1774 TEST_P(GLES2DecoderManualInitTest, |
| 1786 UnClearedAttachmentsGetClearedOnReadPixelsAndDrawBufferGetsRestored) { | 1775 UnClearedAttachmentsGetClearedOnReadPixelsAndDrawBufferGetsRestored) { |
| 1787 InitState init; | 1776 InitState init; |
| 1788 init.extensions = "GL_EXT_framebuffer_multisample"; | 1777 init.extensions = "GL_EXT_framebuffer_multisample"; |
| 1789 init.gl_version = "2.1"; | |
| 1790 init.bind_generates_resource = true; | 1778 init.bind_generates_resource = true; |
| 1791 InitDecoder(init); | 1779 InitDecoder(init); |
| 1792 const GLuint kFBOClientTextureId = 4100; | 1780 const GLuint kFBOClientTextureId = 4100; |
| 1793 const GLuint kFBOServiceTextureId = 4101; | 1781 const GLuint kFBOServiceTextureId = 4101; |
| 1794 | 1782 |
| 1795 // Register a texture id. | 1783 // Register a texture id. |
| 1796 EXPECT_CALL(*gl_, GenTextures(_, _)) | 1784 EXPECT_CALL(*gl_, GenTextures(_, _)) |
| 1797 .WillOnce(SetArgumentPointee<1>(kFBOServiceTextureId)) | 1785 .WillOnce(SetArgumentPointee<1>(kFBOServiceTextureId)) |
| 1798 .RetiresOnSaturation(); | 1786 .RetiresOnSaturation(); |
| 1799 GenHelper<GenTexturesImmediate>(kFBOClientTextureId); | 1787 GenHelper<GenTexturesImmediate>(kFBOClientTextureId); |
| (...skipping 470 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2270 EXPECT_EQ(error::kNoError, | 2258 EXPECT_EQ(error::kNoError, |
| 2271 ExecuteImmediateCmd(discard_cmd, sizeof(attachments))); | 2259 ExecuteImmediateCmd(discard_cmd, sizeof(attachments))); |
| 2272 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 2260 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 2273 EXPECT_FALSE(framebuffer->IsCleared()); | 2261 EXPECT_FALSE(framebuffer->IsCleared()); |
| 2274 EXPECT_FALSE(framebuffer_manager->IsComplete(framebuffer)); | 2262 EXPECT_FALSE(framebuffer_manager->IsComplete(framebuffer)); |
| 2275 } | 2263 } |
| 2276 | 2264 |
| 2277 TEST_P(GLES2DecoderManualInitTest, ReadFormatExtension) { | 2265 TEST_P(GLES2DecoderManualInitTest, ReadFormatExtension) { |
| 2278 InitState init; | 2266 InitState init; |
| 2279 init.extensions = "GL_OES_read_format"; | 2267 init.extensions = "GL_OES_read_format"; |
| 2280 init.gl_version = "2.1"; | |
| 2281 init.bind_generates_resource = true; | 2268 init.bind_generates_resource = true; |
| 2282 InitDecoder(init); | 2269 InitDecoder(init); |
| 2283 | 2270 |
| 2284 EXPECT_CALL(*gl_, GetError()) | 2271 EXPECT_CALL(*gl_, GetError()) |
| 2285 .WillOnce(Return(GL_NO_ERROR)) | 2272 .WillOnce(Return(GL_NO_ERROR)) |
| 2286 .WillOnce(Return(GL_NO_ERROR)) | 2273 .WillOnce(Return(GL_NO_ERROR)) |
| 2287 .WillOnce(Return(GL_NO_ERROR)) | 2274 .WillOnce(Return(GL_NO_ERROR)) |
| 2288 .WillOnce(Return(GL_NO_ERROR)) | 2275 .WillOnce(Return(GL_NO_ERROR)) |
| 2289 .RetiresOnSaturation(); | 2276 .RetiresOnSaturation(); |
| 2290 EXPECT_CALL(*gl_, GetError()).Times(6).RetiresOnSaturation(); | 2277 EXPECT_CALL(*gl_, GetError()).Times(6).RetiresOnSaturation(); |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2329 cmd.Init(GL_IMPLEMENTATION_COLOR_READ_TYPE, | 2316 cmd.Init(GL_IMPLEMENTATION_COLOR_READ_TYPE, |
| 2330 shared_memory_id_, | 2317 shared_memory_id_, |
| 2331 shared_memory_offset_); | 2318 shared_memory_offset_); |
| 2332 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 2319 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 2333 EXPECT_EQ(1, result->GetNumResults()); | 2320 EXPECT_EQ(1, result->GetNumResults()); |
| 2334 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 2321 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 2335 } | 2322 } |
| 2336 | 2323 |
| 2337 TEST_P(GLES2DecoderManualInitTest, NoReadFormatExtension) { | 2324 TEST_P(GLES2DecoderManualInitTest, NoReadFormatExtension) { |
| 2338 InitState init; | 2325 InitState init; |
| 2339 init.gl_version = "2.1"; | |
| 2340 init.bind_generates_resource = true; | 2326 init.bind_generates_resource = true; |
| 2341 InitDecoder(init); | 2327 InitDecoder(init); |
| 2342 | 2328 |
| 2343 EXPECT_CALL(*gl_, GetError()) | 2329 EXPECT_CALL(*gl_, GetError()) |
| 2344 .WillOnce(Return(GL_NO_ERROR)) | 2330 .WillOnce(Return(GL_NO_ERROR)) |
| 2345 .WillOnce(Return(GL_NO_ERROR)) | 2331 .WillOnce(Return(GL_NO_ERROR)) |
| 2346 .WillOnce(Return(GL_NO_ERROR)) | 2332 .WillOnce(Return(GL_NO_ERROR)) |
| 2347 .WillOnce(Return(GL_NO_ERROR)) | 2333 .WillOnce(Return(GL_NO_ERROR)) |
| 2348 .RetiresOnSaturation(); | 2334 .RetiresOnSaturation(); |
| 2349 | 2335 |
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2391 EXPECT_EQ(1, result->GetNumResults()); | 2377 EXPECT_EQ(1, result->GetNumResults()); |
| 2392 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 2378 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 2393 } | 2379 } |
| 2394 | 2380 |
| 2395 // TODO(gman): PixelStorei | 2381 // TODO(gman): PixelStorei |
| 2396 | 2382 |
| 2397 // TODO(gman): SwapBuffers | 2383 // TODO(gman): SwapBuffers |
| 2398 | 2384 |
| 2399 } // namespace gles2 | 2385 } // namespace gles2 |
| 2400 } // namespace gpu | 2386 } // namespace gpu |
| OLD | NEW |