| 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 22 matching lines...) Expand all Loading... |
| 33 using ::testing::_; | 33 using ::testing::_; |
| 34 using ::testing::DoAll; | 34 using ::testing::DoAll; |
| 35 using ::testing::InSequence; | 35 using ::testing::InSequence; |
| 36 using ::testing::Invoke; | 36 using ::testing::Invoke; |
| 37 using ::testing::MatcherCast; | 37 using ::testing::MatcherCast; |
| 38 using ::testing::Mock; | 38 using ::testing::Mock; |
| 39 using ::testing::Pointee; | 39 using ::testing::Pointee; |
| 40 using ::testing::Return; | 40 using ::testing::Return; |
| 41 using ::testing::SaveArg; | 41 using ::testing::SaveArg; |
| 42 using ::testing::SetArrayArgument; | 42 using ::testing::SetArrayArgument; |
| 43 using ::testing::SetArgumentPointee; | |
| 44 using ::testing::SetArgPointee; | 43 using ::testing::SetArgPointee; |
| 45 using ::testing::StrEq; | 44 using ::testing::StrEq; |
| 46 using ::testing::StrictMock; | 45 using ::testing::StrictMock; |
| 47 | 46 |
| 48 namespace gpu { | 47 namespace gpu { |
| 49 namespace gles2 { | 48 namespace gles2 { |
| 50 | 49 |
| 51 using namespace cmds; | 50 using namespace cmds; |
| 52 | 51 |
| 53 class GLES2DecoderTestWithExtensionsOnGLES2 : public GLES2DecoderTest { | 52 class GLES2DecoderTestWithExtensionsOnGLES2 : public GLES2DecoderTest { |
| (...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 137 shared_memory_id_, | 136 shared_memory_id_, |
| 138 shared_memory_offset_); | 137 shared_memory_offset_); |
| 139 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 138 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 140 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); | 139 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); |
| 141 } | 140 } |
| 142 | 141 |
| 143 TEST_P(GLES2DecoderTest, GetFramebufferAttachmentParameterivWithRenderbuffer) { | 142 TEST_P(GLES2DecoderTest, GetFramebufferAttachmentParameterivWithRenderbuffer) { |
| 144 DoBindFramebuffer( | 143 DoBindFramebuffer( |
| 145 GL_FRAMEBUFFER, client_framebuffer_id_, kServiceFramebufferId); | 144 GL_FRAMEBUFFER, client_framebuffer_id_, kServiceFramebufferId); |
| 146 EXPECT_CALL(*gl_, GetError()) | 145 EXPECT_CALL(*gl_, GetError()) |
| 147 .WillOnce(Return(GL_NO_ERROR)) | 146 .WillRepeatedly(Return(GL_NO_ERROR)); |
| 148 .RetiresOnSaturation(); | |
| 149 EXPECT_CALL(*gl_, | 147 EXPECT_CALL(*gl_, |
| 150 FramebufferRenderbufferEXT(GL_FRAMEBUFFER, | 148 FramebufferRenderbufferEXT(GL_FRAMEBUFFER, |
| 151 GL_COLOR_ATTACHMENT0, | 149 GL_COLOR_ATTACHMENT0, |
| 152 GL_RENDERBUFFER, | 150 GL_RENDERBUFFER, |
| 153 kServiceRenderbufferId)) | 151 kServiceRenderbufferId)) |
| 154 .Times(1) | 152 .Times(1) |
| 155 .RetiresOnSaturation(); | 153 .RetiresOnSaturation(); |
| 156 EXPECT_CALL(*gl_, GetError()) | 154 EXPECT_CALL(*gl_, |
| 157 .WillOnce(Return(GL_NO_ERROR)) | 155 GetFramebufferAttachmentParameterivEXT( |
| 158 .RetiresOnSaturation(); | 156 GL_FRAMEBUFFER, |
| 159 EXPECT_CALL(*gl_, GetError()) | 157 GL_COLOR_ATTACHMENT0, |
| 160 .WillOnce(Return(GL_NO_ERROR)) | 158 GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME, |
| 161 .WillOnce(Return(GL_NO_ERROR)) | 159 _)) |
| 160 .WillOnce(SetArgPointee<3>(client_renderbuffer_id_)) |
| 162 .RetiresOnSaturation(); | 161 .RetiresOnSaturation(); |
| 163 GetFramebufferAttachmentParameteriv::Result* result = | 162 GetFramebufferAttachmentParameteriv::Result* result = |
| 164 static_cast<GetFramebufferAttachmentParameteriv::Result*>( | 163 static_cast<GetFramebufferAttachmentParameteriv::Result*>( |
| 165 shared_memory_address_); | 164 shared_memory_address_); |
| 166 result->size = 0; | 165 result->size = 0; |
| 167 const GLint* result_value = result->GetData(); | 166 const GLint* result_value = result->GetData(); |
| 168 FramebufferRenderbuffer fbrb_cmd; | 167 FramebufferRenderbuffer fbrb_cmd; |
| 169 GetFramebufferAttachmentParameteriv cmd; | 168 GetFramebufferAttachmentParameteriv cmd; |
| 170 fbrb_cmd.Init(GL_FRAMEBUFFER, | 169 fbrb_cmd.Init(GL_FRAMEBUFFER, |
| 171 GL_COLOR_ATTACHMENT0, | 170 GL_COLOR_ATTACHMENT0, |
| 172 GL_RENDERBUFFER, | 171 GL_RENDERBUFFER, |
| 173 client_renderbuffer_id_); | 172 client_renderbuffer_id_); |
| 174 cmd.Init(GL_FRAMEBUFFER, | 173 cmd.Init(GL_FRAMEBUFFER, |
| 175 GL_COLOR_ATTACHMENT0, | 174 GL_COLOR_ATTACHMENT0, |
| 176 GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME, | 175 GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME, |
| 177 shared_memory_id_, | 176 shared_memory_id_, |
| 178 shared_memory_offset_); | 177 shared_memory_offset_); |
| 179 EXPECT_EQ(error::kNoError, ExecuteCmd(fbrb_cmd)); | 178 EXPECT_EQ(error::kNoError, ExecuteCmd(fbrb_cmd)); |
| 180 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 179 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 181 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 180 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 182 EXPECT_EQ(static_cast<GLuint>(*result_value), client_renderbuffer_id_); | 181 EXPECT_EQ(client_renderbuffer_id_, static_cast<GLuint>(*result_value)); |
| 183 } | 182 } |
| 184 | 183 |
| 185 TEST_P(GLES2DecoderTest, GetFramebufferAttachmentParameterivWithTexture) { | 184 TEST_P(GLES2DecoderTest, GetFramebufferAttachmentParameterivWithTexture) { |
| 186 DoBindFramebuffer( | 185 DoBindFramebuffer( |
| 187 GL_FRAMEBUFFER, client_framebuffer_id_, kServiceFramebufferId); | 186 GL_FRAMEBUFFER, client_framebuffer_id_, kServiceFramebufferId); |
| 188 EXPECT_CALL(*gl_, GetError()) | 187 EXPECT_CALL(*gl_, GetError()) |
| 189 .WillOnce(Return(GL_NO_ERROR)) | 188 .WillRepeatedly(Return(GL_NO_ERROR)); |
| 190 .RetiresOnSaturation(); | |
| 191 EXPECT_CALL(*gl_, | 189 EXPECT_CALL(*gl_, |
| 192 FramebufferTexture2DEXT(GL_FRAMEBUFFER, | 190 FramebufferTexture2DEXT(GL_FRAMEBUFFER, |
| 193 GL_COLOR_ATTACHMENT0, | 191 GL_COLOR_ATTACHMENT0, |
| 194 GL_TEXTURE_2D, | 192 GL_TEXTURE_2D, |
| 195 kServiceTextureId, | 193 kServiceTextureId, |
| 196 0)) | 194 0)) |
| 197 .Times(1) | 195 .Times(1) |
| 198 .RetiresOnSaturation(); | 196 .RetiresOnSaturation(); |
| 199 EXPECT_CALL(*gl_, GetError()) | 197 EXPECT_CALL(*gl_, |
| 200 .WillOnce(Return(GL_NO_ERROR)) | 198 GetFramebufferAttachmentParameterivEXT( |
| 201 .RetiresOnSaturation(); | 199 GL_FRAMEBUFFER, |
| 202 EXPECT_CALL(*gl_, GetError()) | 200 GL_COLOR_ATTACHMENT0, |
| 203 .WillOnce(Return(GL_NO_ERROR)) | 201 GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME, |
| 204 .WillOnce(Return(GL_NO_ERROR)) | 202 _)) |
| 203 .WillOnce(SetArgPointee<3>(client_texture_id_)) |
| 205 .RetiresOnSaturation(); | 204 .RetiresOnSaturation(); |
| 206 GetFramebufferAttachmentParameteriv::Result* result = | 205 GetFramebufferAttachmentParameteriv::Result* result = |
| 207 static_cast<GetFramebufferAttachmentParameteriv::Result*>( | 206 static_cast<GetFramebufferAttachmentParameteriv::Result*>( |
| 208 shared_memory_address_); | 207 shared_memory_address_); |
| 209 result->SetNumResults(0); | 208 result->SetNumResults(0); |
| 210 const GLint* result_value = result->GetData(); | 209 const GLint* result_value = result->GetData(); |
| 211 FramebufferTexture2D fbtex_cmd; | 210 FramebufferTexture2D fbtex_cmd; |
| 212 GetFramebufferAttachmentParameteriv cmd; | 211 GetFramebufferAttachmentParameteriv cmd; |
| 213 fbtex_cmd.Init(GL_FRAMEBUFFER, | 212 fbtex_cmd.Init(GL_FRAMEBUFFER, |
| 214 GL_COLOR_ATTACHMENT0, | 213 GL_COLOR_ATTACHMENT0, |
| 215 GL_TEXTURE_2D, | 214 GL_TEXTURE_2D, |
| 216 client_texture_id_); | 215 client_texture_id_); |
| 217 cmd.Init(GL_FRAMEBUFFER, | 216 cmd.Init(GL_FRAMEBUFFER, |
| 218 GL_COLOR_ATTACHMENT0, | 217 GL_COLOR_ATTACHMENT0, |
| 219 GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME, | 218 GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME, |
| 220 shared_memory_id_, | 219 shared_memory_id_, |
| 221 shared_memory_offset_); | 220 shared_memory_offset_); |
| 222 EXPECT_EQ(error::kNoError, ExecuteCmd(fbtex_cmd)); | 221 EXPECT_EQ(error::kNoError, ExecuteCmd(fbtex_cmd)); |
| 223 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 222 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 224 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 223 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 225 EXPECT_EQ(static_cast<GLuint>(*result_value), client_texture_id_); | 224 EXPECT_EQ(client_texture_id_, static_cast<GLuint>(*result_value)); |
| 226 } | 225 } |
| 227 | 226 |
| 228 TEST_P(GLES2DecoderWithShaderTest, | 227 TEST_P(GLES2DecoderWithShaderTest, |
| 229 GetRenderbufferParameterivRebindRenderbuffer) { | 228 GetRenderbufferParameterivRebindRenderbuffer) { |
| 230 SetupTexture(); | 229 SetupTexture(); |
| 231 DoBindRenderbuffer( | 230 DoBindRenderbuffer( |
| 232 GL_RENDERBUFFER, client_renderbuffer_id_, kServiceRenderbufferId); | 231 GL_RENDERBUFFER, client_renderbuffer_id_, kServiceRenderbufferId); |
| 233 DoRenderbufferStorage(GL_RENDERBUFFER, GL_RGBA4, GL_RGBA, 1, 1, GL_NO_ERROR); | 232 DoRenderbufferStorage(GL_RENDERBUFFER, GL_RGBA4, GL_RGBA, 1, 1, GL_NO_ERROR); |
| 234 | 233 |
| 235 GetRenderbufferParameteriv cmd; | 234 GetRenderbufferParameteriv cmd; |
| (...skipping 743 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 979 init.bind_generates_resource = true; | 978 init.bind_generates_resource = true; |
| 980 InitDecoder(init); | 979 InitDecoder(init); |
| 981 | 980 |
| 982 EXPECT_CALL(*gl_, GetError()) | 981 EXPECT_CALL(*gl_, GetError()) |
| 983 .WillOnce(Return(GL_NO_ERROR)) | 982 .WillOnce(Return(GL_NO_ERROR)) |
| 984 .WillOnce(Return(GL_NO_ERROR)) | 983 .WillOnce(Return(GL_NO_ERROR)) |
| 985 .RetiresOnSaturation(); | 984 .RetiresOnSaturation(); |
| 986 typedef GetIntegerv::Result Result; | 985 typedef GetIntegerv::Result Result; |
| 987 Result* result = static_cast<Result*>(shared_memory_address_); | 986 Result* result = static_cast<Result*>(shared_memory_address_); |
| 988 EXPECT_CALL(*gl_, GetIntegerv(GL_DEPTH_BITS, _)) | 987 EXPECT_CALL(*gl_, GetIntegerv(GL_DEPTH_BITS, _)) |
| 989 .WillOnce(SetArgumentPointee<1>(24)) | 988 .WillOnce(SetArgPointee<1>(24)) |
| 990 .RetiresOnSaturation(); | 989 .RetiresOnSaturation(); |
| 991 result->size = 0; | 990 result->size = 0; |
| 992 GetIntegerv cmd2; | 991 GetIntegerv cmd2; |
| 993 cmd2.Init(GL_DEPTH_BITS, shared_memory_id_, shared_memory_offset_); | 992 cmd2.Init(GL_DEPTH_BITS, shared_memory_id_, shared_memory_offset_); |
| 994 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd2)); | 993 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd2)); |
| 995 EXPECT_EQ(decoder_->GetGLES2Util()->GLGetNumValuesReturned(GL_DEPTH_BITS), | 994 EXPECT_EQ(decoder_->GetGLES2Util()->GLGetNumValuesReturned(GL_DEPTH_BITS), |
| 996 result->GetNumResults()); | 995 result->GetNumResults()); |
| 997 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 996 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 998 EXPECT_EQ(24, result->GetData()[0]); | 997 EXPECT_EQ(24, result->GetData()[0]); |
| 999 } | 998 } |
| 1000 | 999 |
| 1001 TEST_P(GLES2DecoderManualInitTest, ActualDepthDoesNotMatchRequestedDepth) { | 1000 TEST_P(GLES2DecoderManualInitTest, ActualDepthDoesNotMatchRequestedDepth) { |
| 1002 InitState init; | 1001 InitState init; |
| 1003 init.has_depth = true; | 1002 init.has_depth = true; |
| 1004 init.bind_generates_resource = true; | 1003 init.bind_generates_resource = true; |
| 1005 InitDecoder(init); | 1004 InitDecoder(init); |
| 1006 | 1005 |
| 1007 EXPECT_CALL(*gl_, GetError()) | 1006 EXPECT_CALL(*gl_, GetError()) |
| 1008 .WillOnce(Return(GL_NO_ERROR)) | 1007 .WillOnce(Return(GL_NO_ERROR)) |
| 1009 .WillOnce(Return(GL_NO_ERROR)) | 1008 .WillOnce(Return(GL_NO_ERROR)) |
| 1010 .RetiresOnSaturation(); | 1009 .RetiresOnSaturation(); |
| 1011 typedef GetIntegerv::Result Result; | 1010 typedef GetIntegerv::Result Result; |
| 1012 Result* result = static_cast<Result*>(shared_memory_address_); | 1011 Result* result = static_cast<Result*>(shared_memory_address_); |
| 1013 EXPECT_CALL(*gl_, GetIntegerv(GL_DEPTH_BITS, _)) | 1012 EXPECT_CALL(*gl_, GetIntegerv(GL_DEPTH_BITS, _)) |
| 1014 .WillOnce(SetArgumentPointee<1>(24)) | 1013 .WillOnce(SetArgPointee<1>(24)) |
| 1015 .RetiresOnSaturation(); | 1014 .RetiresOnSaturation(); |
| 1016 result->size = 0; | 1015 result->size = 0; |
| 1017 GetIntegerv cmd2; | 1016 GetIntegerv cmd2; |
| 1018 cmd2.Init(GL_DEPTH_BITS, shared_memory_id_, shared_memory_offset_); | 1017 cmd2.Init(GL_DEPTH_BITS, shared_memory_id_, shared_memory_offset_); |
| 1019 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd2)); | 1018 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd2)); |
| 1020 EXPECT_EQ(decoder_->GetGLES2Util()->GLGetNumValuesReturned(GL_DEPTH_BITS), | 1019 EXPECT_EQ(decoder_->GetGLES2Util()->GLGetNumValuesReturned(GL_DEPTH_BITS), |
| 1021 result->GetNumResults()); | 1020 result->GetNumResults()); |
| 1022 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 1021 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 1023 EXPECT_EQ(0, result->GetData()[0]); | 1022 EXPECT_EQ(0, result->GetData()[0]); |
| 1024 } | 1023 } |
| 1025 | 1024 |
| 1026 TEST_P(GLES2DecoderManualInitTest, ActualStencilMatchesRequestedStencil) { | 1025 TEST_P(GLES2DecoderManualInitTest, ActualStencilMatchesRequestedStencil) { |
| 1027 InitState init; | 1026 InitState init; |
| 1028 init.has_stencil = true; | 1027 init.has_stencil = true; |
| 1029 init.request_stencil = true; | 1028 init.request_stencil = true; |
| 1030 init.bind_generates_resource = true; | 1029 init.bind_generates_resource = true; |
| 1031 InitDecoder(init); | 1030 InitDecoder(init); |
| 1032 | 1031 |
| 1033 EXPECT_CALL(*gl_, GetError()) | 1032 EXPECT_CALL(*gl_, GetError()) |
| 1034 .WillOnce(Return(GL_NO_ERROR)) | 1033 .WillOnce(Return(GL_NO_ERROR)) |
| 1035 .WillOnce(Return(GL_NO_ERROR)) | 1034 .WillOnce(Return(GL_NO_ERROR)) |
| 1036 .RetiresOnSaturation(); | 1035 .RetiresOnSaturation(); |
| 1037 typedef GetIntegerv::Result Result; | 1036 typedef GetIntegerv::Result Result; |
| 1038 Result* result = static_cast<Result*>(shared_memory_address_); | 1037 Result* result = static_cast<Result*>(shared_memory_address_); |
| 1039 EXPECT_CALL(*gl_, GetIntegerv(GL_STENCIL_BITS, _)) | 1038 EXPECT_CALL(*gl_, GetIntegerv(GL_STENCIL_BITS, _)) |
| 1040 .WillOnce(SetArgumentPointee<1>(8)) | 1039 .WillOnce(SetArgPointee<1>(8)) |
| 1041 .RetiresOnSaturation(); | 1040 .RetiresOnSaturation(); |
| 1042 result->size = 0; | 1041 result->size = 0; |
| 1043 GetIntegerv cmd2; | 1042 GetIntegerv cmd2; |
| 1044 cmd2.Init(GL_STENCIL_BITS, shared_memory_id_, shared_memory_offset_); | 1043 cmd2.Init(GL_STENCIL_BITS, shared_memory_id_, shared_memory_offset_); |
| 1045 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd2)); | 1044 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd2)); |
| 1046 EXPECT_EQ(decoder_->GetGLES2Util()->GLGetNumValuesReturned(GL_STENCIL_BITS), | 1045 EXPECT_EQ(decoder_->GetGLES2Util()->GLGetNumValuesReturned(GL_STENCIL_BITS), |
| 1047 result->GetNumResults()); | 1046 result->GetNumResults()); |
| 1048 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 1047 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 1049 EXPECT_EQ(8, result->GetData()[0]); | 1048 EXPECT_EQ(8, result->GetData()[0]); |
| 1050 } | 1049 } |
| 1051 | 1050 |
| 1052 TEST_P(GLES2DecoderManualInitTest, ActualStencilDoesNotMatchRequestedStencil) { | 1051 TEST_P(GLES2DecoderManualInitTest, ActualStencilDoesNotMatchRequestedStencil) { |
| 1053 InitState init; | 1052 InitState init; |
| 1054 init.has_stencil = true; | 1053 init.has_stencil = true; |
| 1055 init.bind_generates_resource = true; | 1054 init.bind_generates_resource = true; |
| 1056 InitDecoder(init); | 1055 InitDecoder(init); |
| 1057 | 1056 |
| 1058 EXPECT_CALL(*gl_, GetError()) | 1057 EXPECT_CALL(*gl_, GetError()) |
| 1059 .WillOnce(Return(GL_NO_ERROR)) | 1058 .WillOnce(Return(GL_NO_ERROR)) |
| 1060 .WillOnce(Return(GL_NO_ERROR)) | 1059 .WillOnce(Return(GL_NO_ERROR)) |
| 1061 .RetiresOnSaturation(); | 1060 .RetiresOnSaturation(); |
| 1062 typedef GetIntegerv::Result Result; | 1061 typedef GetIntegerv::Result Result; |
| 1063 Result* result = static_cast<Result*>(shared_memory_address_); | 1062 Result* result = static_cast<Result*>(shared_memory_address_); |
| 1064 EXPECT_CALL(*gl_, GetIntegerv(GL_STENCIL_BITS, _)) | 1063 EXPECT_CALL(*gl_, GetIntegerv(GL_STENCIL_BITS, _)) |
| 1065 .WillOnce(SetArgumentPointee<1>(8)) | 1064 .WillOnce(SetArgPointee<1>(8)) |
| 1066 .RetiresOnSaturation(); | 1065 .RetiresOnSaturation(); |
| 1067 result->size = 0; | 1066 result->size = 0; |
| 1068 GetIntegerv cmd2; | 1067 GetIntegerv cmd2; |
| 1069 cmd2.Init(GL_STENCIL_BITS, shared_memory_id_, shared_memory_offset_); | 1068 cmd2.Init(GL_STENCIL_BITS, shared_memory_id_, shared_memory_offset_); |
| 1070 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd2)); | 1069 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd2)); |
| 1071 EXPECT_EQ(decoder_->GetGLES2Util()->GLGetNumValuesReturned(GL_STENCIL_BITS), | 1070 EXPECT_EQ(decoder_->GetGLES2Util()->GLGetNumValuesReturned(GL_STENCIL_BITS), |
| 1072 result->GetNumResults()); | 1071 result->GetNumResults()); |
| 1073 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 1072 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 1074 EXPECT_EQ(0, result->GetData()[0]); | 1073 EXPECT_EQ(0, result->GetData()[0]); |
| 1075 } | 1074 } |
| (...skipping 14 matching lines...) Expand all Loading... |
| 1090 .WillOnce(Return(GL_NO_ERROR)) | 1089 .WillOnce(Return(GL_NO_ERROR)) |
| 1091 .WillOnce(Return(GL_NO_ERROR)) | 1090 .WillOnce(Return(GL_NO_ERROR)) |
| 1092 .WillOnce(Return(GL_NO_ERROR)) | 1091 .WillOnce(Return(GL_NO_ERROR)) |
| 1093 .RetiresOnSaturation(); | 1092 .RetiresOnSaturation(); |
| 1094 typedef GetIntegerv::Result Result; | 1093 typedef GetIntegerv::Result Result; |
| 1095 Result* result = static_cast<Result*>(shared_memory_address_); | 1094 Result* result = static_cast<Result*>(shared_memory_address_); |
| 1096 result->size = 0; | 1095 result->size = 0; |
| 1097 GetIntegerv cmd2; | 1096 GetIntegerv cmd2; |
| 1098 cmd2.Init(GL_STENCIL_BITS, shared_memory_id_, shared_memory_offset_); | 1097 cmd2.Init(GL_STENCIL_BITS, shared_memory_id_, shared_memory_offset_); |
| 1099 EXPECT_CALL(*gl_, GetIntegerv(GL_STENCIL_BITS, _)) | 1098 EXPECT_CALL(*gl_, GetIntegerv(GL_STENCIL_BITS, _)) |
| 1100 .WillOnce(SetArgumentPointee<1>(8)) | 1099 .WillOnce(SetArgPointee<1>(8)) |
| 1101 .RetiresOnSaturation(); | 1100 .RetiresOnSaturation(); |
| 1102 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd2)); | 1101 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd2)); |
| 1103 EXPECT_EQ(decoder_->GetGLES2Util()->GLGetNumValuesReturned(GL_STENCIL_BITS), | 1102 EXPECT_EQ(decoder_->GetGLES2Util()->GLGetNumValuesReturned(GL_STENCIL_BITS), |
| 1104 result->GetNumResults()); | 1103 result->GetNumResults()); |
| 1105 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 1104 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 1106 EXPECT_EQ(8, result->GetData()[0]); | 1105 EXPECT_EQ(8, result->GetData()[0]); |
| 1107 result->size = 0; | 1106 result->size = 0; |
| 1108 cmd2.Init(GL_DEPTH_BITS, shared_memory_id_, shared_memory_offset_); | 1107 cmd2.Init(GL_DEPTH_BITS, shared_memory_id_, shared_memory_offset_); |
| 1109 EXPECT_CALL(*gl_, GetIntegerv(GL_DEPTH_BITS, _)) | 1108 EXPECT_CALL(*gl_, GetIntegerv(GL_DEPTH_BITS, _)) |
| 1110 .WillOnce(SetArgumentPointee<1>(24)) | 1109 .WillOnce(SetArgPointee<1>(24)) |
| 1111 .RetiresOnSaturation(); | 1110 .RetiresOnSaturation(); |
| 1112 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd2)); | 1111 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd2)); |
| 1113 EXPECT_EQ(decoder_->GetGLES2Util()->GLGetNumValuesReturned(GL_DEPTH_BITS), | 1112 EXPECT_EQ(decoder_->GetGLES2Util()->GLGetNumValuesReturned(GL_DEPTH_BITS), |
| 1114 result->GetNumResults()); | 1113 result->GetNumResults()); |
| 1115 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 1114 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 1116 EXPECT_EQ(24, result->GetData()[0]); | 1115 EXPECT_EQ(24, result->GetData()[0]); |
| 1117 } | 1116 } |
| 1118 | 1117 |
| 1119 TEST_P(GLES2DecoderManualInitTest, PackedDepthStencilNoRequestedStencil) { | 1118 TEST_P(GLES2DecoderManualInitTest, PackedDepthStencilNoRequestedStencil) { |
| 1120 InitState init; | 1119 InitState init; |
| (...skipping 10 matching lines...) Expand all Loading... |
| 1131 .WillOnce(Return(GL_NO_ERROR)) | 1130 .WillOnce(Return(GL_NO_ERROR)) |
| 1132 .WillOnce(Return(GL_NO_ERROR)) | 1131 .WillOnce(Return(GL_NO_ERROR)) |
| 1133 .WillOnce(Return(GL_NO_ERROR)) | 1132 .WillOnce(Return(GL_NO_ERROR)) |
| 1134 .RetiresOnSaturation(); | 1133 .RetiresOnSaturation(); |
| 1135 typedef GetIntegerv::Result Result; | 1134 typedef GetIntegerv::Result Result; |
| 1136 Result* result = static_cast<Result*>(shared_memory_address_); | 1135 Result* result = static_cast<Result*>(shared_memory_address_); |
| 1137 result->size = 0; | 1136 result->size = 0; |
| 1138 GetIntegerv cmd2; | 1137 GetIntegerv cmd2; |
| 1139 cmd2.Init(GL_STENCIL_BITS, shared_memory_id_, shared_memory_offset_); | 1138 cmd2.Init(GL_STENCIL_BITS, shared_memory_id_, shared_memory_offset_); |
| 1140 EXPECT_CALL(*gl_, GetIntegerv(GL_STENCIL_BITS, _)) | 1139 EXPECT_CALL(*gl_, GetIntegerv(GL_STENCIL_BITS, _)) |
| 1141 .WillOnce(SetArgumentPointee<1>(8)) | 1140 .WillOnce(SetArgPointee<1>(8)) |
| 1142 .RetiresOnSaturation(); | 1141 .RetiresOnSaturation(); |
| 1143 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd2)); | 1142 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd2)); |
| 1144 EXPECT_EQ(decoder_->GetGLES2Util()->GLGetNumValuesReturned(GL_STENCIL_BITS), | 1143 EXPECT_EQ(decoder_->GetGLES2Util()->GLGetNumValuesReturned(GL_STENCIL_BITS), |
| 1145 result->GetNumResults()); | 1144 result->GetNumResults()); |
| 1146 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 1145 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 1147 EXPECT_EQ(0, result->GetData()[0]); | 1146 EXPECT_EQ(0, result->GetData()[0]); |
| 1148 result->size = 0; | 1147 result->size = 0; |
| 1149 cmd2.Init(GL_DEPTH_BITS, shared_memory_id_, shared_memory_offset_); | 1148 cmd2.Init(GL_DEPTH_BITS, shared_memory_id_, shared_memory_offset_); |
| 1150 EXPECT_CALL(*gl_, GetIntegerv(GL_DEPTH_BITS, _)) | 1149 EXPECT_CALL(*gl_, GetIntegerv(GL_DEPTH_BITS, _)) |
| 1151 .WillOnce(SetArgumentPointee<1>(24)) | 1150 .WillOnce(SetArgPointee<1>(24)) |
| 1152 .RetiresOnSaturation(); | 1151 .RetiresOnSaturation(); |
| 1153 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd2)); | 1152 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd2)); |
| 1154 EXPECT_EQ(decoder_->GetGLES2Util()->GLGetNumValuesReturned(GL_DEPTH_BITS), | 1153 EXPECT_EQ(decoder_->GetGLES2Util()->GLGetNumValuesReturned(GL_DEPTH_BITS), |
| 1155 result->GetNumResults()); | 1154 result->GetNumResults()); |
| 1156 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 1155 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 1157 EXPECT_EQ(24, result->GetData()[0]); | 1156 EXPECT_EQ(24, result->GetData()[0]); |
| 1158 } | 1157 } |
| 1159 | 1158 |
| 1160 TEST_P(GLES2DecoderManualInitTest, PackedDepthStencilRenderbufferDepth) { | 1159 TEST_P(GLES2DecoderManualInitTest, PackedDepthStencilRenderbufferDepth) { |
| 1161 InitState init; | 1160 InitState init; |
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1201 GL_RENDERBUFFER, | 1200 GL_RENDERBUFFER, |
| 1202 client_renderbuffer_id_); | 1201 client_renderbuffer_id_); |
| 1203 EXPECT_EQ(error::kNoError, ExecuteCmd(fbrb_cmd)); | 1202 EXPECT_EQ(error::kNoError, ExecuteCmd(fbrb_cmd)); |
| 1204 | 1203 |
| 1205 typedef GetIntegerv::Result Result; | 1204 typedef GetIntegerv::Result Result; |
| 1206 Result* result = static_cast<Result*>(shared_memory_address_); | 1205 Result* result = static_cast<Result*>(shared_memory_address_); |
| 1207 result->size = 0; | 1206 result->size = 0; |
| 1208 GetIntegerv cmd2; | 1207 GetIntegerv cmd2; |
| 1209 cmd2.Init(GL_STENCIL_BITS, shared_memory_id_, shared_memory_offset_); | 1208 cmd2.Init(GL_STENCIL_BITS, shared_memory_id_, shared_memory_offset_); |
| 1210 EXPECT_CALL(*gl_, GetIntegerv(GL_STENCIL_BITS, _)) | 1209 EXPECT_CALL(*gl_, GetIntegerv(GL_STENCIL_BITS, _)) |
| 1211 .WillOnce(SetArgumentPointee<1>(8)) | 1210 .WillOnce(SetArgPointee<1>(8)) |
| 1212 .RetiresOnSaturation(); | 1211 .RetiresOnSaturation(); |
| 1213 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd2)); | 1212 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd2)); |
| 1214 EXPECT_EQ(decoder_->GetGLES2Util()->GLGetNumValuesReturned(GL_STENCIL_BITS), | 1213 EXPECT_EQ(decoder_->GetGLES2Util()->GLGetNumValuesReturned(GL_STENCIL_BITS), |
| 1215 result->GetNumResults()); | 1214 result->GetNumResults()); |
| 1216 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 1215 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 1217 EXPECT_EQ(0, result->GetData()[0]); | 1216 EXPECT_EQ(0, result->GetData()[0]); |
| 1218 result->size = 0; | 1217 result->size = 0; |
| 1219 cmd2.Init(GL_DEPTH_BITS, shared_memory_id_, shared_memory_offset_); | 1218 cmd2.Init(GL_DEPTH_BITS, shared_memory_id_, shared_memory_offset_); |
| 1220 EXPECT_CALL(*gl_, GetIntegerv(GL_DEPTH_BITS, _)) | 1219 EXPECT_CALL(*gl_, GetIntegerv(GL_DEPTH_BITS, _)) |
| 1221 .WillOnce(SetArgumentPointee<1>(24)) | 1220 .WillOnce(SetArgPointee<1>(24)) |
| 1222 .RetiresOnSaturation(); | 1221 .RetiresOnSaturation(); |
| 1223 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd2)); | 1222 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd2)); |
| 1224 EXPECT_EQ(decoder_->GetGLES2Util()->GLGetNumValuesReturned(GL_DEPTH_BITS), | 1223 EXPECT_EQ(decoder_->GetGLES2Util()->GLGetNumValuesReturned(GL_DEPTH_BITS), |
| 1225 result->GetNumResults()); | 1224 result->GetNumResults()); |
| 1226 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 1225 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 1227 EXPECT_EQ(24, result->GetData()[0]); | 1226 EXPECT_EQ(24, result->GetData()[0]); |
| 1228 } | 1227 } |
| 1229 | 1228 |
| 1230 TEST_P(GLES2DecoderManualInitTest, PackedDepthStencilRenderbufferStencil) { | 1229 TEST_P(GLES2DecoderManualInitTest, PackedDepthStencilRenderbufferStencil) { |
| 1231 InitState init; | 1230 InitState init; |
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1271 GL_RENDERBUFFER, | 1270 GL_RENDERBUFFER, |
| 1272 client_renderbuffer_id_); | 1271 client_renderbuffer_id_); |
| 1273 EXPECT_EQ(error::kNoError, ExecuteCmd(fbrb_cmd)); | 1272 EXPECT_EQ(error::kNoError, ExecuteCmd(fbrb_cmd)); |
| 1274 | 1273 |
| 1275 typedef GetIntegerv::Result Result; | 1274 typedef GetIntegerv::Result Result; |
| 1276 Result* result = static_cast<Result*>(shared_memory_address_); | 1275 Result* result = static_cast<Result*>(shared_memory_address_); |
| 1277 result->size = 0; | 1276 result->size = 0; |
| 1278 GetIntegerv cmd2; | 1277 GetIntegerv cmd2; |
| 1279 cmd2.Init(GL_STENCIL_BITS, shared_memory_id_, shared_memory_offset_); | 1278 cmd2.Init(GL_STENCIL_BITS, shared_memory_id_, shared_memory_offset_); |
| 1280 EXPECT_CALL(*gl_, GetIntegerv(GL_STENCIL_BITS, _)) | 1279 EXPECT_CALL(*gl_, GetIntegerv(GL_STENCIL_BITS, _)) |
| 1281 .WillOnce(SetArgumentPointee<1>(8)) | 1280 .WillOnce(SetArgPointee<1>(8)) |
| 1282 .RetiresOnSaturation(); | 1281 .RetiresOnSaturation(); |
| 1283 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd2)); | 1282 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd2)); |
| 1284 EXPECT_EQ(decoder_->GetGLES2Util()->GLGetNumValuesReturned(GL_STENCIL_BITS), | 1283 EXPECT_EQ(decoder_->GetGLES2Util()->GLGetNumValuesReturned(GL_STENCIL_BITS), |
| 1285 result->GetNumResults()); | 1284 result->GetNumResults()); |
| 1286 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 1285 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 1287 EXPECT_EQ(8, result->GetData()[0]); | 1286 EXPECT_EQ(8, result->GetData()[0]); |
| 1288 result->size = 0; | 1287 result->size = 0; |
| 1289 cmd2.Init(GL_DEPTH_BITS, shared_memory_id_, shared_memory_offset_); | 1288 cmd2.Init(GL_DEPTH_BITS, shared_memory_id_, shared_memory_offset_); |
| 1290 EXPECT_CALL(*gl_, GetIntegerv(GL_DEPTH_BITS, _)) | 1289 EXPECT_CALL(*gl_, GetIntegerv(GL_DEPTH_BITS, _)) |
| 1291 .WillOnce(SetArgumentPointee<1>(24)) | 1290 .WillOnce(SetArgPointee<1>(24)) |
| 1292 .RetiresOnSaturation(); | 1291 .RetiresOnSaturation(); |
| 1293 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd2)); | 1292 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd2)); |
| 1294 EXPECT_EQ(decoder_->GetGLES2Util()->GLGetNumValuesReturned(GL_DEPTH_BITS), | 1293 EXPECT_EQ(decoder_->GetGLES2Util()->GLGetNumValuesReturned(GL_DEPTH_BITS), |
| 1295 result->GetNumResults()); | 1294 result->GetNumResults()); |
| 1296 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 1295 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 1297 EXPECT_EQ(0, result->GetData()[0]); | 1296 EXPECT_EQ(0, result->GetData()[0]); |
| 1298 } | 1297 } |
| 1299 | 1298 |
| 1300 TEST_P(GLES2DecoderTest, FramebufferRenderbufferGLError) { | 1299 TEST_P(GLES2DecoderTest, FramebufferRenderbufferGLError) { |
| 1301 DoBindFramebuffer( | 1300 DoBindFramebuffer( |
| (...skipping 467 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1769 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 1768 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 1770 EXPECT_EQ(GL_OUT_OF_MEMORY, GetGLError()); | 1769 EXPECT_EQ(GL_OUT_OF_MEMORY, GetGLError()); |
| 1771 } | 1770 } |
| 1772 | 1771 |
| 1773 TEST_P(GLES2DecoderWithShaderTest, UnClearedAttachmentsGetClearedOnClear) { | 1772 TEST_P(GLES2DecoderWithShaderTest, UnClearedAttachmentsGetClearedOnClear) { |
| 1774 const GLuint kFBOClientTextureId = 4100; | 1773 const GLuint kFBOClientTextureId = 4100; |
| 1775 const GLuint kFBOServiceTextureId = 4101; | 1774 const GLuint kFBOServiceTextureId = 4101; |
| 1776 | 1775 |
| 1777 // Register a texture id. | 1776 // Register a texture id. |
| 1778 EXPECT_CALL(*gl_, GenTextures(_, _)) | 1777 EXPECT_CALL(*gl_, GenTextures(_, _)) |
| 1779 .WillOnce(SetArgumentPointee<1>(kFBOServiceTextureId)) | 1778 .WillOnce(SetArgPointee<1>(kFBOServiceTextureId)) |
| 1780 .RetiresOnSaturation(); | 1779 .RetiresOnSaturation(); |
| 1781 GenHelper<GenTexturesImmediate>(kFBOClientTextureId); | 1780 GenHelper<GenTexturesImmediate>(kFBOClientTextureId); |
| 1782 | 1781 |
| 1783 // Setup "render to" texture. | 1782 // Setup "render to" texture. |
| 1784 DoBindTexture(GL_TEXTURE_2D, kFBOClientTextureId, kFBOServiceTextureId); | 1783 DoBindTexture(GL_TEXTURE_2D, kFBOClientTextureId, kFBOServiceTextureId); |
| 1785 DoTexImage2D( | 1784 DoTexImage2D( |
| 1786 GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0, 0); | 1785 GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0, 0); |
| 1787 DoBindFramebuffer( | 1786 DoBindFramebuffer( |
| 1788 GL_FRAMEBUFFER, client_framebuffer_id_, kServiceFramebufferId); | 1787 GL_FRAMEBUFFER, client_framebuffer_id_, kServiceFramebufferId); |
| 1789 DoFramebufferTexture2D(GL_FRAMEBUFFER, | 1788 DoFramebufferTexture2D(GL_FRAMEBUFFER, |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1826 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 1825 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 1827 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 1826 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 1828 } | 1827 } |
| 1829 | 1828 |
| 1830 TEST_P(GLES2DecoderWithShaderTest, UnClearedAttachmentsGetClearedOnReadPixels) { | 1829 TEST_P(GLES2DecoderWithShaderTest, UnClearedAttachmentsGetClearedOnReadPixels) { |
| 1831 const GLuint kFBOClientTextureId = 4100; | 1830 const GLuint kFBOClientTextureId = 4100; |
| 1832 const GLuint kFBOServiceTextureId = 4101; | 1831 const GLuint kFBOServiceTextureId = 4101; |
| 1833 | 1832 |
| 1834 // Register a texture id. | 1833 // Register a texture id. |
| 1835 EXPECT_CALL(*gl_, GenTextures(_, _)) | 1834 EXPECT_CALL(*gl_, GenTextures(_, _)) |
| 1836 .WillOnce(SetArgumentPointee<1>(kFBOServiceTextureId)) | 1835 .WillOnce(SetArgPointee<1>(kFBOServiceTextureId)) |
| 1837 .RetiresOnSaturation(); | 1836 .RetiresOnSaturation(); |
| 1838 GenHelper<GenTexturesImmediate>(kFBOClientTextureId); | 1837 GenHelper<GenTexturesImmediate>(kFBOClientTextureId); |
| 1839 | 1838 |
| 1840 // Setup "render to" texture. | 1839 // Setup "render to" texture. |
| 1841 DoBindTexture(GL_TEXTURE_2D, kFBOClientTextureId, kFBOServiceTextureId); | 1840 DoBindTexture(GL_TEXTURE_2D, kFBOClientTextureId, kFBOServiceTextureId); |
| 1842 DoTexImage2D( | 1841 DoTexImage2D( |
| 1843 GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0, 0); | 1842 GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0, 0); |
| 1844 DoBindFramebuffer( | 1843 DoBindFramebuffer( |
| 1845 GL_FRAMEBUFFER, client_framebuffer_id_, kServiceFramebufferId); | 1844 GL_FRAMEBUFFER, client_framebuffer_id_, kServiceFramebufferId); |
| 1846 DoFramebufferTexture2D(GL_FRAMEBUFFER, | 1845 DoFramebufferTexture2D(GL_FRAMEBUFFER, |
| (...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1897 UnClearedAttachmentsGetClearedOnReadPixelsAndDrawBufferGetsRestored) { | 1896 UnClearedAttachmentsGetClearedOnReadPixelsAndDrawBufferGetsRestored) { |
| 1898 InitState init; | 1897 InitState init; |
| 1899 init.extensions = "GL_EXT_framebuffer_multisample"; | 1898 init.extensions = "GL_EXT_framebuffer_multisample"; |
| 1900 init.bind_generates_resource = true; | 1899 init.bind_generates_resource = true; |
| 1901 InitDecoder(init); | 1900 InitDecoder(init); |
| 1902 const GLuint kFBOClientTextureId = 4100; | 1901 const GLuint kFBOClientTextureId = 4100; |
| 1903 const GLuint kFBOServiceTextureId = 4101; | 1902 const GLuint kFBOServiceTextureId = 4101; |
| 1904 | 1903 |
| 1905 // Register a texture id. | 1904 // Register a texture id. |
| 1906 EXPECT_CALL(*gl_, GenTextures(_, _)) | 1905 EXPECT_CALL(*gl_, GenTextures(_, _)) |
| 1907 .WillOnce(SetArgumentPointee<1>(kFBOServiceTextureId)) | 1906 .WillOnce(SetArgPointee<1>(kFBOServiceTextureId)) |
| 1908 .RetiresOnSaturation(); | 1907 .RetiresOnSaturation(); |
| 1909 GenHelper<GenTexturesImmediate>(kFBOClientTextureId); | 1908 GenHelper<GenTexturesImmediate>(kFBOClientTextureId); |
| 1910 | 1909 |
| 1911 // Setup "render from" texture. | 1910 // Setup "render from" texture. |
| 1912 DoBindTexture(GL_TEXTURE_2D, kFBOClientTextureId, kFBOServiceTextureId); | 1911 DoBindTexture(GL_TEXTURE_2D, kFBOClientTextureId, kFBOServiceTextureId); |
| 1913 DoTexImage2D( | 1912 DoTexImage2D( |
| 1914 GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0, 0); | 1913 GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0, 0); |
| 1915 DoBindFramebuffer( | 1914 DoBindFramebuffer( |
| 1916 GL_READ_FRAMEBUFFER, client_framebuffer_id_, kServiceFramebufferId); | 1915 GL_READ_FRAMEBUFFER, client_framebuffer_id_, kServiceFramebufferId); |
| 1917 DoFramebufferTexture2D(GL_READ_FRAMEBUFFER, | 1916 DoFramebufferTexture2D(GL_READ_FRAMEBUFFER, |
| (...skipping 138 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2056 } | 2055 } |
| 2057 | 2056 |
| 2058 void GLES2DecoderWithShaderTest::CheckTextureChangesMarkFBOAsNotComplete( | 2057 void GLES2DecoderWithShaderTest::CheckTextureChangesMarkFBOAsNotComplete( |
| 2059 bool bound_fbo) { | 2058 bool bound_fbo) { |
| 2060 FramebufferManager* framebuffer_manager = group().framebuffer_manager(); | 2059 FramebufferManager* framebuffer_manager = group().framebuffer_manager(); |
| 2061 const GLuint kFBOClientTextureId = 4100; | 2060 const GLuint kFBOClientTextureId = 4100; |
| 2062 const GLuint kFBOServiceTextureId = 4101; | 2061 const GLuint kFBOServiceTextureId = 4101; |
| 2063 | 2062 |
| 2064 // Register a texture id. | 2063 // Register a texture id. |
| 2065 EXPECT_CALL(*gl_, GenTextures(_, _)) | 2064 EXPECT_CALL(*gl_, GenTextures(_, _)) |
| 2066 .WillOnce(SetArgumentPointee<1>(kFBOServiceTextureId)) | 2065 .WillOnce(SetArgPointee<1>(kFBOServiceTextureId)) |
| 2067 .RetiresOnSaturation(); | 2066 .RetiresOnSaturation(); |
| 2068 GenHelper<GenTexturesImmediate>(kFBOClientTextureId); | 2067 GenHelper<GenTexturesImmediate>(kFBOClientTextureId); |
| 2069 | 2068 |
| 2070 SetupTexture(); | 2069 SetupTexture(); |
| 2071 | 2070 |
| 2072 // Setup "render to" texture. | 2071 // Setup "render to" texture. |
| 2073 DoBindTexture(GL_TEXTURE_2D, kFBOClientTextureId, kFBOServiceTextureId); | 2072 DoBindTexture(GL_TEXTURE_2D, kFBOClientTextureId, kFBOServiceTextureId); |
| 2074 DoTexImage2D( | 2073 DoTexImage2D( |
| 2075 GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0, 0); | 2074 GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0, 0); |
| 2076 DoBindFramebuffer( | 2075 DoBindFramebuffer( |
| (...skipping 222 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2299 init.gl_version = "opengl es 2.0"; | 2298 init.gl_version = "opengl es 2.0"; |
| 2300 init.has_alpha = true; | 2299 init.has_alpha = true; |
| 2301 init.bind_generates_resource = true; | 2300 init.bind_generates_resource = true; |
| 2302 InitDecoder(init); | 2301 InitDecoder(init); |
| 2303 | 2302 |
| 2304 const GLuint kFBOClientTextureId = 4100; | 2303 const GLuint kFBOClientTextureId = 4100; |
| 2305 const GLuint kFBOServiceTextureId = 4101; | 2304 const GLuint kFBOServiceTextureId = 4101; |
| 2306 | 2305 |
| 2307 // Register a texture id. | 2306 // Register a texture id. |
| 2308 EXPECT_CALL(*gl_, GenTextures(_, _)) | 2307 EXPECT_CALL(*gl_, GenTextures(_, _)) |
| 2309 .WillOnce(SetArgumentPointee<1>(kFBOServiceTextureId)) | 2308 .WillOnce(SetArgPointee<1>(kFBOServiceTextureId)) |
| 2310 .RetiresOnSaturation(); | 2309 .RetiresOnSaturation(); |
| 2311 GenHelper<GenTexturesImmediate>(kFBOClientTextureId); | 2310 GenHelper<GenTexturesImmediate>(kFBOClientTextureId); |
| 2312 | 2311 |
| 2313 // Setup "render to" texture. | 2312 // Setup "render to" texture. |
| 2314 DoBindTexture(GL_TEXTURE_2D, kFBOClientTextureId, kFBOServiceTextureId); | 2313 DoBindTexture(GL_TEXTURE_2D, kFBOClientTextureId, kFBOServiceTextureId); |
| 2315 DoTexImage2D( | 2314 DoTexImage2D( |
| 2316 GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0, 0); | 2315 GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0, 0); |
| 2317 DoBindFramebuffer( | 2316 DoBindFramebuffer( |
| 2318 GL_FRAMEBUFFER, client_framebuffer_id_, kServiceFramebufferId); | 2317 GL_FRAMEBUFFER, client_framebuffer_id_, kServiceFramebufferId); |
| 2319 DoFramebufferTexture2D(GL_FRAMEBUFFER, | 2318 DoFramebufferTexture2D(GL_FRAMEBUFFER, |
| (...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2400 EXPECT_CALL(*gl_, GetError()).Times(6).RetiresOnSaturation(); | 2399 EXPECT_CALL(*gl_, GetError()).Times(6).RetiresOnSaturation(); |
| 2401 | 2400 |
| 2402 typedef GetIntegerv::Result Result; | 2401 typedef GetIntegerv::Result Result; |
| 2403 Result* result = static_cast<Result*>(shared_memory_address_); | 2402 Result* result = static_cast<Result*>(shared_memory_address_); |
| 2404 GetIntegerv cmd; | 2403 GetIntegerv cmd; |
| 2405 const GLuint kFBOClientTextureId = 4100; | 2404 const GLuint kFBOClientTextureId = 4100; |
| 2406 const GLuint kFBOServiceTextureId = 4101; | 2405 const GLuint kFBOServiceTextureId = 4101; |
| 2407 | 2406 |
| 2408 // Register a texture id. | 2407 // Register a texture id. |
| 2409 EXPECT_CALL(*gl_, GenTextures(_, _)) | 2408 EXPECT_CALL(*gl_, GenTextures(_, _)) |
| 2410 .WillOnce(SetArgumentPointee<1>(kFBOServiceTextureId)) | 2409 .WillOnce(SetArgPointee<1>(kFBOServiceTextureId)) |
| 2411 .RetiresOnSaturation(); | 2410 .RetiresOnSaturation(); |
| 2412 GenHelper<GenTexturesImmediate>(kFBOClientTextureId); | 2411 GenHelper<GenTexturesImmediate>(kFBOClientTextureId); |
| 2413 | 2412 |
| 2414 // Setup "render to" texture. | 2413 // Setup "render to" texture. |
| 2415 DoBindTexture(GL_TEXTURE_2D, kFBOClientTextureId, kFBOServiceTextureId); | 2414 DoBindTexture(GL_TEXTURE_2D, kFBOClientTextureId, kFBOServiceTextureId); |
| 2416 DoTexImage2D( | 2415 DoTexImage2D( |
| 2417 GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0, 0); | 2416 GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0, 0); |
| 2418 DoBindFramebuffer( | 2417 DoBindFramebuffer( |
| 2419 GL_FRAMEBUFFER, client_framebuffer_id_, kServiceFramebufferId); | 2418 GL_FRAMEBUFFER, client_framebuffer_id_, kServiceFramebufferId); |
| 2420 DoFramebufferTexture2D(GL_FRAMEBUFFER, | 2419 DoFramebufferTexture2D(GL_FRAMEBUFFER, |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2457 .RetiresOnSaturation(); | 2456 .RetiresOnSaturation(); |
| 2458 | 2457 |
| 2459 typedef GetIntegerv::Result Result; | 2458 typedef GetIntegerv::Result Result; |
| 2460 Result* result = static_cast<Result*>(shared_memory_address_); | 2459 Result* result = static_cast<Result*>(shared_memory_address_); |
| 2461 GetIntegerv cmd; | 2460 GetIntegerv cmd; |
| 2462 const GLuint kFBOClientTextureId = 4100; | 2461 const GLuint kFBOClientTextureId = 4100; |
| 2463 const GLuint kFBOServiceTextureId = 4101; | 2462 const GLuint kFBOServiceTextureId = 4101; |
| 2464 | 2463 |
| 2465 // Register a texture id. | 2464 // Register a texture id. |
| 2466 EXPECT_CALL(*gl_, GenTextures(_, _)) | 2465 EXPECT_CALL(*gl_, GenTextures(_, _)) |
| 2467 .WillOnce(SetArgumentPointee<1>(kFBOServiceTextureId)) | 2466 .WillOnce(SetArgPointee<1>(kFBOServiceTextureId)) |
| 2468 .RetiresOnSaturation(); | 2467 .RetiresOnSaturation(); |
| 2469 GenHelper<GenTexturesImmediate>(kFBOClientTextureId); | 2468 GenHelper<GenTexturesImmediate>(kFBOClientTextureId); |
| 2470 | 2469 |
| 2471 // Setup "render to" texture. | 2470 // Setup "render to" texture. |
| 2472 DoBindTexture(GL_TEXTURE_2D, kFBOClientTextureId, kFBOServiceTextureId); | 2471 DoBindTexture(GL_TEXTURE_2D, kFBOClientTextureId, kFBOServiceTextureId); |
| 2473 DoTexImage2D( | 2472 DoTexImage2D( |
| 2474 GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0, 0); | 2473 GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0, 0); |
| 2475 DoBindFramebuffer( | 2474 DoBindFramebuffer( |
| 2476 GL_FRAMEBUFFER, client_framebuffer_id_, kServiceFramebufferId); | 2475 GL_FRAMEBUFFER, client_framebuffer_id_, kServiceFramebufferId); |
| 2477 DoFramebufferTexture2D(GL_FRAMEBUFFER, | 2476 DoFramebufferTexture2D(GL_FRAMEBUFFER, |
| (...skipping 22 matching lines...) Expand all Loading... |
| 2500 EXPECT_EQ(1, result->GetNumResults()); | 2499 EXPECT_EQ(1, result->GetNumResults()); |
| 2501 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 2500 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 2502 } | 2501 } |
| 2503 | 2502 |
| 2504 // TODO(gman): PixelStorei | 2503 // TODO(gman): PixelStorei |
| 2505 | 2504 |
| 2506 // TODO(gman): SwapBuffers | 2505 // TODO(gman): SwapBuffers |
| 2507 | 2506 |
| 2508 } // namespace gles2 | 2507 } // namespace gles2 |
| 2509 } // namespace gpu | 2508 } // namespace gpu |
| OLD | NEW |