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 |