| 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 |