| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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/atomicops.h" | 7 #include "base/atomicops.h" |
| 8 #include "gpu/command_buffer/common/gl_mock.h" | 8 #include "gpu/command_buffer/common/gl_mock.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 1091 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1102 shared_memory_id_, kInvalidSharedMemoryOffset); | 1102 shared_memory_id_, kInvalidSharedMemoryOffset); |
| 1103 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); | 1103 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); |
| 1104 } | 1104 } |
| 1105 | 1105 |
| 1106 TEST_F(GLES2DecoderWithShaderTest, GetUniformivSucceeds) { | 1106 TEST_F(GLES2DecoderWithShaderTest, GetUniformivSucceeds) { |
| 1107 GetUniformiv::Result* result = | 1107 GetUniformiv::Result* result = |
| 1108 static_cast<GetUniformiv::Result*>(shared_memory_address_); | 1108 static_cast<GetUniformiv::Result*>(shared_memory_address_); |
| 1109 result->size = 0; | 1109 result->size = 0; |
| 1110 GetUniformiv cmd; | 1110 GetUniformiv cmd; |
| 1111 cmd.Init(client_program_id_, | 1111 cmd.Init(client_program_id_, |
| 1112 program_manager()->SwizzleLocation(kUniform2FakeLocation), | 1112 GLES2Util::SwizzleLocation(kUniform2FakeLocation), |
| 1113 kSharedMemoryId, kSharedMemoryOffset); | 1113 kSharedMemoryId, kSharedMemoryOffset); |
| 1114 EXPECT_CALL(*gl_, GetUniformiv(kServiceProgramId, kUniform2RealLocation, _)) | 1114 EXPECT_CALL(*gl_, GetUniformiv(kServiceProgramId, kUniform2RealLocation, _)) |
| 1115 .Times(1); | 1115 .Times(1); |
| 1116 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 1116 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 1117 EXPECT_EQ(GLES2Util::GetGLDataTypeSizeForUniforms(kUniform2Type), | 1117 EXPECT_EQ(GLES2Util::GetGLDataTypeSizeForUniforms(kUniform2Type), |
| 1118 result->size); | 1118 result->size); |
| 1119 } | 1119 } |
| 1120 | 1120 |
| 1121 TEST_F(GLES2DecoderWithShaderTest, GetUniformivArrayElementSucceeds) { | 1121 TEST_F(GLES2DecoderWithShaderTest, GetUniformivArrayElementSucceeds) { |
| 1122 GetUniformiv::Result* result = | 1122 GetUniformiv::Result* result = |
| 1123 static_cast<GetUniformiv::Result*>(shared_memory_address_); | 1123 static_cast<GetUniformiv::Result*>(shared_memory_address_); |
| 1124 result->size = 0; | 1124 result->size = 0; |
| 1125 GetUniformiv cmd; | 1125 GetUniformiv cmd; |
| 1126 cmd.Init(client_program_id_, | 1126 cmd.Init(client_program_id_, |
| 1127 program_manager()->SwizzleLocation(kUniform2ElementFakeLocation), | 1127 GLES2Util::SwizzleLocation(kUniform2ElementFakeLocation), |
| 1128 kSharedMemoryId, kSharedMemoryOffset); | 1128 kSharedMemoryId, kSharedMemoryOffset); |
| 1129 EXPECT_CALL(*gl_, | 1129 EXPECT_CALL(*gl_, |
| 1130 GetUniformiv(kServiceProgramId, kUniform2ElementRealLocation, _)) | 1130 GetUniformiv(kServiceProgramId, kUniform2ElementRealLocation, _)) |
| 1131 .Times(1); | 1131 .Times(1); |
| 1132 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 1132 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 1133 EXPECT_EQ(GLES2Util::GetGLDataTypeSizeForUniforms(kUniform2Type), | 1133 EXPECT_EQ(GLES2Util::GetGLDataTypeSizeForUniforms(kUniform2Type), |
| 1134 result->size); | 1134 result->size); |
| 1135 } | 1135 } |
| 1136 | 1136 |
| 1137 TEST_F(GLES2DecoderWithShaderTest, GetUniformivBadProgramFails) { | 1137 TEST_F(GLES2DecoderWithShaderTest, GetUniformivBadProgramFails) { |
| 1138 GetUniformiv::Result* result = | 1138 GetUniformiv::Result* result = |
| 1139 static_cast<GetUniformiv::Result*>(shared_memory_address_); | 1139 static_cast<GetUniformiv::Result*>(shared_memory_address_); |
| 1140 result->size = 0; | 1140 result->size = 0; |
| 1141 GetUniformiv cmd; | 1141 GetUniformiv cmd; |
| 1142 // non-existant program | 1142 // non-existant program |
| 1143 cmd.Init(kInvalidClientId, | 1143 cmd.Init(kInvalidClientId, |
| 1144 program_manager()->SwizzleLocation(kUniform2FakeLocation), | 1144 GLES2Util::SwizzleLocation(kUniform2FakeLocation), |
| 1145 kSharedMemoryId, kSharedMemoryOffset); | 1145 kSharedMemoryId, kSharedMemoryOffset); |
| 1146 EXPECT_CALL(*gl_, GetUniformiv(_, _, _)) | 1146 EXPECT_CALL(*gl_, GetUniformiv(_, _, _)) |
| 1147 .Times(0); | 1147 .Times(0); |
| 1148 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 1148 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 1149 EXPECT_EQ(0U, result->size); | 1149 EXPECT_EQ(0U, result->size); |
| 1150 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); | 1150 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); |
| 1151 // Valid id that is not a program. The GL spec requires a different error for | 1151 // Valid id that is not a program. The GL spec requires a different error for |
| 1152 // this case. | 1152 // this case. |
| 1153 #if GLES2_TEST_SHADER_VS_PROGRAM_IDS | 1153 #if GLES2_TEST_SHADER_VS_PROGRAM_IDS |
| 1154 result->size = kInitialResult; | 1154 result->size = kInitialResult; |
| 1155 cmd.Init(client_shader_id_, | 1155 cmd.Init(client_shader_id_, |
| 1156 program_manager()->SwizzleLocation(kUniform2FakeLocation), | 1156 GLES2Util::SwizzleLocation(kUniform2FakeLocation), |
| 1157 kSharedMemoryId, kSharedMemoryOffset); | 1157 kSharedMemoryId, kSharedMemoryOffset); |
| 1158 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 1158 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 1159 EXPECT_EQ(0U, result->size); | 1159 EXPECT_EQ(0U, result->size); |
| 1160 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); | 1160 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); |
| 1161 #endif // GLES2_TEST_SHADER_VS_PROGRAM_IDS | 1161 #endif // GLES2_TEST_SHADER_VS_PROGRAM_IDS |
| 1162 // Unlinked program | 1162 // Unlinked program |
| 1163 EXPECT_CALL(*gl_, CreateProgram()) | 1163 EXPECT_CALL(*gl_, CreateProgram()) |
| 1164 .Times(1) | 1164 .Times(1) |
| 1165 .WillOnce(Return(kNewServiceId)) | 1165 .WillOnce(Return(kNewServiceId)) |
| 1166 .RetiresOnSaturation(); | 1166 .RetiresOnSaturation(); |
| 1167 CreateProgram cmd2; | 1167 CreateProgram cmd2; |
| 1168 cmd2.Init(kNewClientId); | 1168 cmd2.Init(kNewClientId); |
| 1169 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd2)); | 1169 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd2)); |
| 1170 result->size = kInitialResult; | 1170 result->size = kInitialResult; |
| 1171 cmd.Init(kNewClientId, | 1171 cmd.Init(kNewClientId, |
| 1172 program_manager()->SwizzleLocation(kUniform2FakeLocation), | 1172 GLES2Util::SwizzleLocation(kUniform2FakeLocation), |
| 1173 kSharedMemoryId, kSharedMemoryOffset); | 1173 kSharedMemoryId, kSharedMemoryOffset); |
| 1174 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 1174 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 1175 EXPECT_EQ(0U, result->size); | 1175 EXPECT_EQ(0U, result->size); |
| 1176 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); | 1176 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); |
| 1177 } | 1177 } |
| 1178 | 1178 |
| 1179 TEST_F(GLES2DecoderWithShaderTest, GetUniformivBadLocationFails) { | 1179 TEST_F(GLES2DecoderWithShaderTest, GetUniformivBadLocationFails) { |
| 1180 GetUniformiv::Result* result = | 1180 GetUniformiv::Result* result = |
| 1181 static_cast<GetUniformiv::Result*>(shared_memory_address_); | 1181 static_cast<GetUniformiv::Result*>(shared_memory_address_); |
| 1182 result->size = 0; | 1182 result->size = 0; |
| 1183 GetUniformiv cmd; | 1183 GetUniformiv cmd; |
| 1184 // invalid location | 1184 // invalid location |
| 1185 cmd.Init(client_program_id_, kInvalidUniformLocation, | 1185 cmd.Init(client_program_id_, kInvalidUniformLocation, |
| 1186 kSharedMemoryId, kSharedMemoryOffset); | 1186 kSharedMemoryId, kSharedMemoryOffset); |
| 1187 EXPECT_CALL(*gl_, GetUniformiv(_, _, _)) | 1187 EXPECT_CALL(*gl_, GetUniformiv(_, _, _)) |
| 1188 .Times(0); | 1188 .Times(0); |
| 1189 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 1189 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 1190 EXPECT_EQ(0U, result->size); | 1190 EXPECT_EQ(0U, result->size); |
| 1191 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); | 1191 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); |
| 1192 } | 1192 } |
| 1193 | 1193 |
| 1194 TEST_F(GLES2DecoderWithShaderTest, GetUniformivBadSharedMemoryFails) { | 1194 TEST_F(GLES2DecoderWithShaderTest, GetUniformivBadSharedMemoryFails) { |
| 1195 GetUniformiv cmd; | 1195 GetUniformiv cmd; |
| 1196 cmd.Init(client_program_id_, | 1196 cmd.Init(client_program_id_, |
| 1197 program_manager()->SwizzleLocation(kUniform2FakeLocation), | 1197 GLES2Util::SwizzleLocation(kUniform2FakeLocation), |
| 1198 kInvalidSharedMemoryId, kSharedMemoryOffset); | 1198 kInvalidSharedMemoryId, kSharedMemoryOffset); |
| 1199 EXPECT_CALL(*gl_, GetUniformiv(_, _, _)) | 1199 EXPECT_CALL(*gl_, GetUniformiv(_, _, _)) |
| 1200 .Times(0); | 1200 .Times(0); |
| 1201 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); | 1201 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); |
| 1202 cmd.Init(client_program_id_, kUniform2FakeLocation, | 1202 cmd.Init(client_program_id_, kUniform2FakeLocation, |
| 1203 kSharedMemoryId, kInvalidSharedMemoryOffset); | 1203 kSharedMemoryId, kInvalidSharedMemoryOffset); |
| 1204 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); | 1204 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); |
| 1205 }; | 1205 }; |
| 1206 | 1206 |
| 1207 TEST_F(GLES2DecoderWithShaderTest, GetUniformfvSucceeds) { | 1207 TEST_F(GLES2DecoderWithShaderTest, GetUniformfvSucceeds) { |
| 1208 GetUniformfv::Result* result = | 1208 GetUniformfv::Result* result = |
| 1209 static_cast<GetUniformfv::Result*>(shared_memory_address_); | 1209 static_cast<GetUniformfv::Result*>(shared_memory_address_); |
| 1210 result->size = 0; | 1210 result->size = 0; |
| 1211 GetUniformfv cmd; | 1211 GetUniformfv cmd; |
| 1212 cmd.Init(client_program_id_, | 1212 cmd.Init(client_program_id_, |
| 1213 program_manager()->SwizzleLocation(kUniform2FakeLocation), | 1213 GLES2Util::SwizzleLocation(kUniform2FakeLocation), |
| 1214 kSharedMemoryId, kSharedMemoryOffset); | 1214 kSharedMemoryId, kSharedMemoryOffset); |
| 1215 EXPECT_CALL(*gl_, GetUniformfv(kServiceProgramId, kUniform2RealLocation, _)) | 1215 EXPECT_CALL(*gl_, GetUniformfv(kServiceProgramId, kUniform2RealLocation, _)) |
| 1216 .Times(1); | 1216 .Times(1); |
| 1217 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 1217 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 1218 EXPECT_EQ(GLES2Util::GetGLDataTypeSizeForUniforms(kUniform2Type), | 1218 EXPECT_EQ(GLES2Util::GetGLDataTypeSizeForUniforms(kUniform2Type), |
| 1219 result->size); | 1219 result->size); |
| 1220 } | 1220 } |
| 1221 | 1221 |
| 1222 TEST_F(GLES2DecoderWithShaderTest, GetUniformfvArrayElementSucceeds) { | 1222 TEST_F(GLES2DecoderWithShaderTest, GetUniformfvArrayElementSucceeds) { |
| 1223 GetUniformfv::Result* result = | 1223 GetUniformfv::Result* result = |
| 1224 static_cast<GetUniformfv::Result*>(shared_memory_address_); | 1224 static_cast<GetUniformfv::Result*>(shared_memory_address_); |
| 1225 result->size = 0; | 1225 result->size = 0; |
| 1226 GetUniformfv cmd; | 1226 GetUniformfv cmd; |
| 1227 cmd.Init(client_program_id_, | 1227 cmd.Init(client_program_id_, |
| 1228 program_manager()->SwizzleLocation(kUniform2ElementFakeLocation), | 1228 GLES2Util::SwizzleLocation(kUniform2ElementFakeLocation), |
| 1229 kSharedMemoryId, kSharedMemoryOffset); | 1229 kSharedMemoryId, kSharedMemoryOffset); |
| 1230 EXPECT_CALL(*gl_, | 1230 EXPECT_CALL(*gl_, |
| 1231 GetUniformfv(kServiceProgramId, kUniform2ElementRealLocation, _)) | 1231 GetUniformfv(kServiceProgramId, kUniform2ElementRealLocation, _)) |
| 1232 .Times(1); | 1232 .Times(1); |
| 1233 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 1233 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 1234 EXPECT_EQ(GLES2Util::GetGLDataTypeSizeForUniforms(kUniform2Type), | 1234 EXPECT_EQ(GLES2Util::GetGLDataTypeSizeForUniforms(kUniform2Type), |
| 1235 result->size); | 1235 result->size); |
| 1236 } | 1236 } |
| 1237 | 1237 |
| 1238 TEST_F(GLES2DecoderWithShaderTest, GetUniformfvBadProgramFails) { | 1238 TEST_F(GLES2DecoderWithShaderTest, GetUniformfvBadProgramFails) { |
| 1239 GetUniformfv::Result* result = | 1239 GetUniformfv::Result* result = |
| 1240 static_cast<GetUniformfv::Result*>(shared_memory_address_); | 1240 static_cast<GetUniformfv::Result*>(shared_memory_address_); |
| 1241 result->size = 0; | 1241 result->size = 0; |
| 1242 GetUniformfv cmd; | 1242 GetUniformfv cmd; |
| 1243 // non-existant program | 1243 // non-existant program |
| 1244 cmd.Init(kInvalidClientId, | 1244 cmd.Init(kInvalidClientId, |
| 1245 program_manager()->SwizzleLocation(kUniform2FakeLocation), | 1245 GLES2Util::SwizzleLocation(kUniform2FakeLocation), |
| 1246 kSharedMemoryId, kSharedMemoryOffset); | 1246 kSharedMemoryId, kSharedMemoryOffset); |
| 1247 EXPECT_CALL(*gl_, GetUniformfv(_, _, _)) | 1247 EXPECT_CALL(*gl_, GetUniformfv(_, _, _)) |
| 1248 .Times(0); | 1248 .Times(0); |
| 1249 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 1249 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 1250 EXPECT_EQ(0U, result->size); | 1250 EXPECT_EQ(0U, result->size); |
| 1251 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); | 1251 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); |
| 1252 // Valid id that is not a program. The GL spec requires a different error for | 1252 // Valid id that is not a program. The GL spec requires a different error for |
| 1253 // this case. | 1253 // this case. |
| 1254 #if GLES2_TEST_SHADER_VS_PROGRAM_IDS | 1254 #if GLES2_TEST_SHADER_VS_PROGRAM_IDS |
| 1255 result->size = kInitialResult; | 1255 result->size = kInitialResult; |
| 1256 cmd.Init(client_shader_id_, | 1256 cmd.Init(client_shader_id_, |
| 1257 program_manager()->SwizzleLocation(kUniform2FakeLocation), | 1257 GLES2Util::SwizzleLocation(kUniform2FakeLocation), |
| 1258 kSharedMemoryId, kSharedMemoryOffset); | 1258 kSharedMemoryId, kSharedMemoryOffset); |
| 1259 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 1259 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 1260 EXPECT_EQ(0U, result->size); | 1260 EXPECT_EQ(0U, result->size); |
| 1261 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); | 1261 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); |
| 1262 #endif // GLES2_TEST_SHADER_VS_PROGRAM_IDS | 1262 #endif // GLES2_TEST_SHADER_VS_PROGRAM_IDS |
| 1263 // Unlinked program | 1263 // Unlinked program |
| 1264 EXPECT_CALL(*gl_, CreateProgram()) | 1264 EXPECT_CALL(*gl_, CreateProgram()) |
| 1265 .Times(1) | 1265 .Times(1) |
| 1266 .WillOnce(Return(kNewServiceId)) | 1266 .WillOnce(Return(kNewServiceId)) |
| 1267 .RetiresOnSaturation(); | 1267 .RetiresOnSaturation(); |
| 1268 CreateProgram cmd2; | 1268 CreateProgram cmd2; |
| 1269 cmd2.Init(kNewClientId); | 1269 cmd2.Init(kNewClientId); |
| 1270 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd2)); | 1270 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd2)); |
| 1271 result->size = kInitialResult; | 1271 result->size = kInitialResult; |
| 1272 cmd.Init(kNewClientId, | 1272 cmd.Init(kNewClientId, |
| 1273 program_manager()->SwizzleLocation(kUniform2FakeLocation), | 1273 GLES2Util::SwizzleLocation(kUniform2FakeLocation), |
| 1274 kSharedMemoryId, kSharedMemoryOffset); | 1274 kSharedMemoryId, kSharedMemoryOffset); |
| 1275 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 1275 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 1276 EXPECT_EQ(0U, result->size); | 1276 EXPECT_EQ(0U, result->size); |
| 1277 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); | 1277 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); |
| 1278 } | 1278 } |
| 1279 | 1279 |
| 1280 TEST_F(GLES2DecoderWithShaderTest, GetUniformfvBadLocationFails) { | 1280 TEST_F(GLES2DecoderWithShaderTest, GetUniformfvBadLocationFails) { |
| 1281 GetUniformfv::Result* result = | 1281 GetUniformfv::Result* result = |
| 1282 static_cast<GetUniformfv::Result*>(shared_memory_address_); | 1282 static_cast<GetUniformfv::Result*>(shared_memory_address_); |
| 1283 result->size = 0; | 1283 result->size = 0; |
| 1284 GetUniformfv cmd; | 1284 GetUniformfv cmd; |
| 1285 // invalid location | 1285 // invalid location |
| 1286 cmd.Init(client_program_id_, kInvalidUniformLocation, | 1286 cmd.Init(client_program_id_, kInvalidUniformLocation, |
| 1287 kSharedMemoryId, kSharedMemoryOffset); | 1287 kSharedMemoryId, kSharedMemoryOffset); |
| 1288 EXPECT_CALL(*gl_, GetUniformfv(_, _, _)) | 1288 EXPECT_CALL(*gl_, GetUniformfv(_, _, _)) |
| 1289 .Times(0); | 1289 .Times(0); |
| 1290 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 1290 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 1291 EXPECT_EQ(0U, result->size); | 1291 EXPECT_EQ(0U, result->size); |
| 1292 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); | 1292 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); |
| 1293 } | 1293 } |
| 1294 | 1294 |
| 1295 TEST_F(GLES2DecoderWithShaderTest, GetUniformfvBadSharedMemoryFails) { | 1295 TEST_F(GLES2DecoderWithShaderTest, GetUniformfvBadSharedMemoryFails) { |
| 1296 GetUniformfv cmd; | 1296 GetUniformfv cmd; |
| 1297 cmd.Init(client_program_id_, | 1297 cmd.Init(client_program_id_, |
| 1298 program_manager()->SwizzleLocation(kUniform2FakeLocation), | 1298 GLES2Util::SwizzleLocation(kUniform2FakeLocation), |
| 1299 kInvalidSharedMemoryId, kSharedMemoryOffset); | 1299 kInvalidSharedMemoryId, kSharedMemoryOffset); |
| 1300 EXPECT_CALL(*gl_, GetUniformfv(_, _, _)) | 1300 EXPECT_CALL(*gl_, GetUniformfv(_, _, _)) |
| 1301 .Times(0); | 1301 .Times(0); |
| 1302 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); | 1302 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); |
| 1303 cmd.Init(client_program_id_, kUniform2FakeLocation, | 1303 cmd.Init(client_program_id_, kUniform2FakeLocation, |
| 1304 kSharedMemoryId, kInvalidSharedMemoryOffset); | 1304 kSharedMemoryId, kInvalidSharedMemoryOffset); |
| 1305 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); | 1305 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); |
| 1306 }; | 1306 }; |
| 1307 | 1307 |
| 1308 TEST_F(GLES2DecoderWithShaderTest, GetAttachedShadersSucceeds) { | 1308 TEST_F(GLES2DecoderWithShaderTest, GetAttachedShadersSucceeds) { |
| (...skipping 556 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1865 .RetiresOnSaturation(); | 1865 .RetiresOnSaturation(); |
| 1866 GenerateMipmap cmd; | 1866 GenerateMipmap cmd; |
| 1867 cmd.Init(GL_TEXTURE_2D); | 1867 cmd.Init(GL_TEXTURE_2D); |
| 1868 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 1868 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 1869 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 1869 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 1870 } | 1870 } |
| 1871 | 1871 |
| 1872 TEST_F(GLES2DecoderWithShaderTest, Uniform1iValidArgs) { | 1872 TEST_F(GLES2DecoderWithShaderTest, Uniform1iValidArgs) { |
| 1873 EXPECT_CALL(*gl_, Uniform1i(kUniform1RealLocation, 2)); | 1873 EXPECT_CALL(*gl_, Uniform1i(kUniform1RealLocation, 2)); |
| 1874 Uniform1i cmd; | 1874 Uniform1i cmd; |
| 1875 cmd.Init(program_manager()->SwizzleLocation(kUniform1FakeLocation), 2); | 1875 cmd.Init(GLES2Util::SwizzleLocation(kUniform1FakeLocation), 2); |
| 1876 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 1876 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 1877 } | 1877 } |
| 1878 | 1878 |
| 1879 TEST_F(GLES2DecoderWithShaderTest, Uniform1ivValidArgs) { | 1879 TEST_F(GLES2DecoderWithShaderTest, Uniform1ivValidArgs) { |
| 1880 EXPECT_CALL( | 1880 EXPECT_CALL( |
| 1881 *gl_, Uniform1iv(kUniform1RealLocation, 1, | 1881 *gl_, Uniform1iv(kUniform1RealLocation, 1, |
| 1882 reinterpret_cast<const GLint*>(shared_memory_address_))); | 1882 reinterpret_cast<const GLint*>(shared_memory_address_))); |
| 1883 Uniform1iv cmd; | 1883 Uniform1iv cmd; |
| 1884 cmd.Init(program_manager()->SwizzleLocation(kUniform1FakeLocation), | 1884 cmd.Init(GLES2Util::SwizzleLocation(kUniform1FakeLocation), |
| 1885 1, shared_memory_id_, shared_memory_offset_); | 1885 1, shared_memory_id_, shared_memory_offset_); |
| 1886 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 1886 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 1887 } | 1887 } |
| 1888 | 1888 |
| 1889 TEST_F(GLES2DecoderWithShaderTest, Uniform1ivInvalidArgs2_0) { | 1889 TEST_F(GLES2DecoderWithShaderTest, Uniform1ivInvalidArgs2_0) { |
| 1890 EXPECT_CALL(*gl_, Uniform1iv(_, _, _)).Times(0); | 1890 EXPECT_CALL(*gl_, Uniform1iv(_, _, _)).Times(0); |
| 1891 Uniform1iv cmd; | 1891 Uniform1iv cmd; |
| 1892 cmd.Init(program_manager()->SwizzleLocation(kUniform1FakeLocation), | 1892 cmd.Init(GLES2Util::SwizzleLocation(kUniform1FakeLocation), |
| 1893 1, kInvalidSharedMemoryId, 0); | 1893 1, kInvalidSharedMemoryId, 0); |
| 1894 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd)); | 1894 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd)); |
| 1895 } | 1895 } |
| 1896 | 1896 |
| 1897 TEST_F(GLES2DecoderWithShaderTest, Uniform1ivInvalidArgs2_1) { | 1897 TEST_F(GLES2DecoderWithShaderTest, Uniform1ivInvalidArgs2_1) { |
| 1898 EXPECT_CALL(*gl_, Uniform1iv(_, _, _)).Times(0); | 1898 EXPECT_CALL(*gl_, Uniform1iv(_, _, _)).Times(0); |
| 1899 Uniform1iv cmd; | 1899 Uniform1iv cmd; |
| 1900 cmd.Init(program_manager()->SwizzleLocation(kUniform1FakeLocation), | 1900 cmd.Init(GLES2Util::SwizzleLocation(kUniform1FakeLocation), |
| 1901 1, shared_memory_id_, kInvalidSharedMemoryOffset); | 1901 1, shared_memory_id_, kInvalidSharedMemoryOffset); |
| 1902 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd)); | 1902 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd)); |
| 1903 } | 1903 } |
| 1904 | 1904 |
| 1905 TEST_F(GLES2DecoderWithShaderTest, Uniform1ivImmediateValidArgs) { | 1905 TEST_F(GLES2DecoderWithShaderTest, Uniform1ivImmediateValidArgs) { |
| 1906 Uniform1ivImmediate& cmd = *GetImmediateAs<Uniform1ivImmediate>(); | 1906 Uniform1ivImmediate& cmd = *GetImmediateAs<Uniform1ivImmediate>(); |
| 1907 EXPECT_CALL( | 1907 EXPECT_CALL( |
| 1908 *gl_, | 1908 *gl_, |
| 1909 Uniform1iv(kUniform1RealLocation, 1, | 1909 Uniform1iv(kUniform1RealLocation, 1, |
| 1910 reinterpret_cast<GLint*>(ImmediateDataAddress(&cmd)))); | 1910 reinterpret_cast<GLint*>(ImmediateDataAddress(&cmd)))); |
| 1911 GLint temp[1 * 2] = { 0, }; | 1911 GLint temp[1 * 2] = { 0, }; |
| 1912 cmd.Init(program_manager()->SwizzleLocation(kUniform1FakeLocation), 1, | 1912 cmd.Init(GLES2Util::SwizzleLocation(kUniform1FakeLocation), 1, |
| 1913 &temp[0]); | 1913 &temp[0]); |
| 1914 EXPECT_EQ(error::kNoError, | 1914 EXPECT_EQ(error::kNoError, |
| 1915 ExecuteImmediateCmd(cmd, sizeof(temp))); | 1915 ExecuteImmediateCmd(cmd, sizeof(temp))); |
| 1916 } | 1916 } |
| 1917 | 1917 |
| 1918 TEST_F(GLES2DecoderWithShaderTest, Uniform1ivInvalidValidArgs) { | 1918 TEST_F(GLES2DecoderWithShaderTest, Uniform1ivInvalidValidArgs) { |
| 1919 EXPECT_CALL(*gl_, Uniform1iv(_, _, _)).Times(0); | 1919 EXPECT_CALL(*gl_, Uniform1iv(_, _, _)).Times(0); |
| 1920 Uniform1iv cmd; | 1920 Uniform1iv cmd; |
| 1921 cmd.Init(program_manager()->SwizzleLocation(kUniform1FakeLocation), | 1921 cmd.Init(GLES2Util::SwizzleLocation(kUniform1FakeLocation), |
| 1922 2, shared_memory_id_, shared_memory_offset_); | 1922 2, shared_memory_id_, shared_memory_offset_); |
| 1923 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 1923 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 1924 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); | 1924 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); |
| 1925 } | 1925 } |
| 1926 | 1926 |
| 1927 TEST_F(GLES2DecoderWithShaderTest, Uniform1ivZeroCount) { | 1927 TEST_F(GLES2DecoderWithShaderTest, Uniform1ivZeroCount) { |
| 1928 EXPECT_CALL(*gl_, Uniform1iv(_, _, _)).Times(0); | 1928 EXPECT_CALL(*gl_, Uniform1iv(_, _, _)).Times(0); |
| 1929 Uniform1iv cmd; | 1929 Uniform1iv cmd; |
| 1930 cmd.Init(program_manager()->SwizzleLocation(kUniform1FakeLocation), | 1930 cmd.Init(GLES2Util::SwizzleLocation(kUniform1FakeLocation), |
| 1931 0, shared_memory_id_, shared_memory_offset_); | 1931 0, shared_memory_id_, shared_memory_offset_); |
| 1932 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 1932 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 1933 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 1933 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 1934 } | 1934 } |
| 1935 | 1935 |
| 1936 TEST_F(GLES2DecoderWithShaderTest, Uniform1iSamplerIsLmited) { | 1936 TEST_F(GLES2DecoderWithShaderTest, Uniform1iSamplerIsLmited) { |
| 1937 EXPECT_CALL(*gl_, Uniform1i(_, _)).Times(0); | 1937 EXPECT_CALL(*gl_, Uniform1i(_, _)).Times(0); |
| 1938 Uniform1i cmd; | 1938 Uniform1i cmd; |
| 1939 cmd.Init( | 1939 cmd.Init( |
| 1940 program_manager()->SwizzleLocation(kUniform1FakeLocation), | 1940 GLES2Util::SwizzleLocation(kUniform1FakeLocation), |
| 1941 kNumTextureUnits); | 1941 kNumTextureUnits); |
| 1942 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 1942 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 1943 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); | 1943 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); |
| 1944 } | 1944 } |
| 1945 | 1945 |
| 1946 TEST_F(GLES2DecoderWithShaderTest, Uniform1ivSamplerIsLimited) { | 1946 TEST_F(GLES2DecoderWithShaderTest, Uniform1ivSamplerIsLimited) { |
| 1947 EXPECT_CALL(*gl_, Uniform1iv(_, _, _)).Times(0); | 1947 EXPECT_CALL(*gl_, Uniform1iv(_, _, _)).Times(0); |
| 1948 Uniform1ivImmediate& cmd = *GetImmediateAs<Uniform1ivImmediate>(); | 1948 Uniform1ivImmediate& cmd = *GetImmediateAs<Uniform1ivImmediate>(); |
| 1949 GLint temp[] = { kNumTextureUnits }; | 1949 GLint temp[] = { kNumTextureUnits }; |
| 1950 cmd.Init(program_manager()->SwizzleLocation(kUniform1FakeLocation), 1, | 1950 cmd.Init(GLES2Util::SwizzleLocation(kUniform1FakeLocation), 1, |
| 1951 &temp[0]); | 1951 &temp[0]); |
| 1952 EXPECT_EQ(error::kNoError, | 1952 EXPECT_EQ(error::kNoError, |
| 1953 ExecuteImmediateCmd(cmd, sizeof(temp))); | 1953 ExecuteImmediateCmd(cmd, sizeof(temp))); |
| 1954 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); | 1954 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); |
| 1955 } | 1955 } |
| 1956 | 1956 |
| 1957 TEST_F(GLES2DecoderWithShaderTest, BindBufferToDifferentTargetFails) { | 1957 TEST_F(GLES2DecoderWithShaderTest, BindBufferToDifferentTargetFails) { |
| 1958 // Bind the buffer to GL_ARRAY_BUFFER | 1958 // Bind the buffer to GL_ARRAY_BUFFER |
| 1959 DoBindBuffer(GL_ARRAY_BUFFER, client_buffer_id_, kServiceBufferId); | 1959 DoBindBuffer(GL_ARRAY_BUFFER, client_buffer_id_, kServiceBufferId); |
| 1960 // Attempt to rebind to GL_ELEMENT_ARRAY_BUFFER | 1960 // Attempt to rebind to GL_ELEMENT_ARRAY_BUFFER |
| (...skipping 844 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2805 *result = -1; | 2805 *result = -1; |
| 2806 char* name = GetSharedMemoryAsWithOffset<char*>(sizeof(*result)); | 2806 char* name = GetSharedMemoryAsWithOffset<char*>(sizeof(*result)); |
| 2807 const uint32 kNameOffset = kSharedMemoryOffset + sizeof(*result); | 2807 const uint32 kNameOffset = kSharedMemoryOffset + sizeof(*result); |
| 2808 memcpy(name, kUniform2Name, kNameSize); | 2808 memcpy(name, kUniform2Name, kNameSize); |
| 2809 GetUniformLocation cmd; | 2809 GetUniformLocation cmd; |
| 2810 cmd.Init(client_program_id_, | 2810 cmd.Init(client_program_id_, |
| 2811 kSharedMemoryId, kNameOffset, | 2811 kSharedMemoryId, kNameOffset, |
| 2812 kSharedMemoryId, kSharedMemoryOffset, | 2812 kSharedMemoryId, kSharedMemoryOffset, |
| 2813 kNameSize); | 2813 kNameSize); |
| 2814 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 2814 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 2815 EXPECT_EQ(program_manager()->SwizzleLocation(kUniform2FakeLocation), *result); | 2815 EXPECT_EQ(GLES2Util::SwizzleLocation(kUniform2FakeLocation), *result); |
| 2816 memcpy(name, kNonExistentName, kNonExistentNameSize); | 2816 memcpy(name, kNonExistentName, kNonExistentNameSize); |
| 2817 *result = -1; | 2817 *result = -1; |
| 2818 cmd.Init(client_program_id_, | 2818 cmd.Init(client_program_id_, |
| 2819 kSharedMemoryId, kNameOffset, | 2819 kSharedMemoryId, kNameOffset, |
| 2820 kSharedMemoryId, kSharedMemoryOffset, | 2820 kSharedMemoryId, kSharedMemoryOffset, |
| 2821 kNonExistentNameSize); | 2821 kNonExistentNameSize); |
| 2822 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 2822 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 2823 EXPECT_EQ(-1, *result); | 2823 EXPECT_EQ(-1, *result); |
| 2824 } | 2824 } |
| 2825 | 2825 |
| (...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2886 const char* kNonExistentName = "foobar"; | 2886 const char* kNonExistentName = "foobar"; |
| 2887 const uint32 kNonExistentNameSize = strlen(kNonExistentName); | 2887 const uint32 kNonExistentNameSize = strlen(kNonExistentName); |
| 2888 typedef GetUniformLocationImmediate::Result Result; | 2888 typedef GetUniformLocationImmediate::Result Result; |
| 2889 Result* result = GetSharedMemoryAs<Result*>(); | 2889 Result* result = GetSharedMemoryAs<Result*>(); |
| 2890 *result = -1; | 2890 *result = -1; |
| 2891 GetUniformLocationImmediate& cmd = | 2891 GetUniformLocationImmediate& cmd = |
| 2892 *GetImmediateAs<GetUniformLocationImmediate>(); | 2892 *GetImmediateAs<GetUniformLocationImmediate>(); |
| 2893 cmd.Init(client_program_id_, kUniform2Name, | 2893 cmd.Init(client_program_id_, kUniform2Name, |
| 2894 kSharedMemoryId, kSharedMemoryOffset); | 2894 kSharedMemoryId, kSharedMemoryOffset); |
| 2895 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, kNameSize)); | 2895 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, kNameSize)); |
| 2896 EXPECT_EQ(program_manager()->SwizzleLocation(kUniform2FakeLocation), *result); | 2896 EXPECT_EQ(GLES2Util::SwizzleLocation(kUniform2FakeLocation), *result); |
| 2897 *result = -1; | 2897 *result = -1; |
| 2898 cmd.Init(client_program_id_, kNonExistentName, | 2898 cmd.Init(client_program_id_, kNonExistentName, |
| 2899 kSharedMemoryId, kSharedMemoryOffset); | 2899 kSharedMemoryId, kSharedMemoryOffset); |
| 2900 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, kNonExistentNameSize)); | 2900 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, kNonExistentNameSize)); |
| 2901 EXPECT_EQ(-1, *result); | 2901 EXPECT_EQ(-1, *result); |
| 2902 } | 2902 } |
| 2903 | 2903 |
| 2904 TEST_F(GLES2DecoderWithShaderTest, GetUniformLocationImmediateInvalidArgs) { | 2904 TEST_F(GLES2DecoderWithShaderTest, GetUniformLocationImmediateInvalidArgs) { |
| 2905 const uint32 kNameSize = strlen(kUniform2Name); | 2905 const uint32 kNameSize = strlen(kUniform2Name); |
| 2906 typedef GetUniformLocationImmediate::Result Result; | 2906 typedef GetUniformLocationImmediate::Result Result; |
| (...skipping 21 matching lines...) Expand all Loading... |
| 2928 const uint32 kBucketId = 123; | 2928 const uint32 kBucketId = 123; |
| 2929 const char* kNonExistentName = "foobar"; | 2929 const char* kNonExistentName = "foobar"; |
| 2930 typedef GetUniformLocationBucket::Result Result; | 2930 typedef GetUniformLocationBucket::Result Result; |
| 2931 Result* result = GetSharedMemoryAs<Result*>(); | 2931 Result* result = GetSharedMemoryAs<Result*>(); |
| 2932 SetBucketAsCString(kBucketId, kUniform2Name); | 2932 SetBucketAsCString(kBucketId, kUniform2Name); |
| 2933 *result = -1; | 2933 *result = -1; |
| 2934 GetUniformLocationBucket cmd; | 2934 GetUniformLocationBucket cmd; |
| 2935 cmd.Init(client_program_id_, kBucketId, | 2935 cmd.Init(client_program_id_, kBucketId, |
| 2936 kSharedMemoryId, kSharedMemoryOffset); | 2936 kSharedMemoryId, kSharedMemoryOffset); |
| 2937 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 2937 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 2938 EXPECT_EQ(program_manager()->SwizzleLocation(kUniform2FakeLocation), *result); | 2938 EXPECT_EQ(GLES2Util::SwizzleLocation(kUniform2FakeLocation), *result); |
| 2939 SetBucketAsCString(kBucketId, kNonExistentName); | 2939 SetBucketAsCString(kBucketId, kNonExistentName); |
| 2940 *result = -1; | 2940 *result = -1; |
| 2941 cmd.Init(client_program_id_, kBucketId, | 2941 cmd.Init(client_program_id_, kBucketId, |
| 2942 kSharedMemoryId, kSharedMemoryOffset); | 2942 kSharedMemoryId, kSharedMemoryOffset); |
| 2943 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 2943 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 2944 EXPECT_EQ(-1, *result); | 2944 EXPECT_EQ(-1, *result); |
| 2945 } | 2945 } |
| 2946 | 2946 |
| 2947 TEST_F(GLES2DecoderWithShaderTest, GetUniformLocationBucketInvalidArgs) { | 2947 TEST_F(GLES2DecoderWithShaderTest, GetUniformLocationBucketInvalidArgs) { |
| 2948 const uint32 kBucketId = 123; | 2948 const uint32 kBucketId = 123; |
| (...skipping 4457 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 7406 // TODO(gman): TexImage2DImmediate | 7406 // TODO(gman): TexImage2DImmediate |
| 7407 | 7407 |
| 7408 // TODO(gman): TexSubImage2DImmediate | 7408 // TODO(gman): TexSubImage2DImmediate |
| 7409 | 7409 |
| 7410 // TODO(gman): UseProgram | 7410 // TODO(gman): UseProgram |
| 7411 | 7411 |
| 7412 // TODO(gman): SwapBuffers | 7412 // TODO(gman): SwapBuffers |
| 7413 | 7413 |
| 7414 } // namespace gles2 | 7414 } // namespace gles2 |
| 7415 } // namespace gpu | 7415 } // namespace gpu |
| OLD | NEW |