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