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 |