Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(442)

Side by Side Diff: gpu/command_buffer/service/gles2_cmd_decoder_unittest.cc

Issue 10635011: Add glBindUniformLocationCHROMIUM (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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
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 GLES2Util::SwizzleLocation(kUniform2FakeLocation), 1112 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 GLES2Util::SwizzleLocation(kUniform2ElementFakeLocation), 1127 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 GLES2Util::SwizzleLocation(kUniform2FakeLocation), 1144 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 GLES2Util::SwizzleLocation(kUniform2FakeLocation), 1156 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 GLES2Util::SwizzleLocation(kUniform2FakeLocation), 1172 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 GLES2Util::SwizzleLocation(kUniform2FakeLocation), 1197 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 GLES2Util::SwizzleLocation(kUniform2FakeLocation), 1213 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 GLES2Util::SwizzleLocation(kUniform2ElementFakeLocation), 1228 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 GLES2Util::SwizzleLocation(kUniform2FakeLocation), 1245 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 GLES2Util::SwizzleLocation(kUniform2FakeLocation), 1257 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 GLES2Util::SwizzleLocation(kUniform2FakeLocation), 1273 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 GLES2Util::SwizzleLocation(kUniform2FakeLocation), 1298 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
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(GLES2Util::SwizzleLocation(kUniform1FakeLocation), 2); 1875 cmd.Init(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(GLES2Util::SwizzleLocation(kUniform1FakeLocation), 1884 cmd.Init(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(GLES2Util::SwizzleLocation(kUniform1FakeLocation), 1892 cmd.Init(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(GLES2Util::SwizzleLocation(kUniform1FakeLocation), 1900 cmd.Init(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(GLES2Util::SwizzleLocation(kUniform1FakeLocation), 1, 1912 cmd.Init(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(GLES2Util::SwizzleLocation(kUniform1FakeLocation), 1921 cmd.Init(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(GLES2Util::SwizzleLocation(kUniform1FakeLocation), 1930 cmd.Init(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 GLES2Util::SwizzleLocation(kUniform1FakeLocation), 1940 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(GLES2Util::SwizzleLocation(kUniform1FakeLocation), 1, 1950 cmd.Init(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
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(GLES2Util::SwizzleLocation(kUniform2FakeLocation), *result); 2815 EXPECT_EQ(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
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(GLES2Util::SwizzleLocation(kUniform2FakeLocation), *result); 2896 EXPECT_EQ(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
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(GLES2Util::SwizzleLocation(kUniform2FakeLocation), *result); 2938 EXPECT_EQ(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 4421 matching lines...) Expand 10 before | Expand all | Expand 10 after
7370 SetupExpectationsForApplyingDefaultDirtyState(); 7370 SetupExpectationsForApplyingDefaultDirtyState();
7371 EXPECT_CALL(*gl_, DrawArrays(GL_TRIANGLES, 0, kNumVertices)) 7371 EXPECT_CALL(*gl_, DrawArrays(GL_TRIANGLES, 0, kNumVertices))
7372 .Times(1) 7372 .Times(1)
7373 .RetiresOnSaturation(); 7373 .RetiresOnSaturation();
7374 DrawArrays cmd; 7374 DrawArrays cmd;
7375 cmd.Init(GL_TRIANGLES, 0, kNumVertices); 7375 cmd.Init(GL_TRIANGLES, 0, kNumVertices);
7376 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 7376 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
7377 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 7377 EXPECT_EQ(GL_NO_ERROR, GetGLError());
7378 } 7378 }
7379 7379
7380 TEST_F(GLES2DecoderWithShaderTest, BindUniformLocationCHROMIUM) {
7381 const GLint kLocation = 2;
7382 const char* kName = "testing";
7383 const uint32 kNameSize = strlen(kName);
7384 const char* kBadName1 = "gl_testing";
7385 const uint32 kBadName1Size = strlen(kBadName1);
7386 const char* kBadName2 = "testing[1]";
7387 const uint32 kBadName2Size = strlen(kBadName2);
7388 memcpy(shared_memory_address_, kName, kNameSize);
7389 BindUniformLocationCHROMIUM cmd;
7390 cmd.Init(client_program_id_, kLocation, kSharedMemoryId, kSharedMemoryOffset,
7391 kNameSize);
7392 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
7393 EXPECT_EQ(GL_NO_ERROR, GetGLError());
7394 // check negative location
7395 memcpy(shared_memory_address_, kName, kNameSize);
7396 cmd.Init(client_program_id_, -1, kSharedMemoryId, kSharedMemoryOffset,
7397 kNameSize);
7398 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
7399 EXPECT_EQ(GL_INVALID_VALUE, GetGLError());
7400 // check highest location
7401 memcpy(shared_memory_address_, kName, kNameSize);
7402 GLint kMaxLocation =
7403 (kMaxFragmentUniformVectors + kMaxVertexUniformVectors) * 4 - 1;
7404 cmd.Init(client_program_id_, kMaxLocation, kSharedMemoryId,
7405 kSharedMemoryOffset, kNameSize);
7406 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
7407 EXPECT_EQ(GL_NO_ERROR, GetGLError());
7408 // check too high location
7409 memcpy(shared_memory_address_, kName, kNameSize);
7410 cmd.Init(client_program_id_, kMaxLocation + 1, kSharedMemoryId,
7411 kSharedMemoryOffset, kNameSize);
7412 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
7413 EXPECT_EQ(GL_INVALID_VALUE, GetGLError());
7414 // check bad name "gl_..."
7415 memcpy(shared_memory_address_, kBadName1, kBadName1Size);
7416 cmd.Init(client_program_id_, kLocation, kSharedMemoryId, kSharedMemoryOffset,
7417 kBadName1Size);
7418 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
7419 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError());
7420 // check bad name "name[1]" non zero
7421 memcpy(shared_memory_address_, kBadName2, kBadName2Size);
7422 cmd.Init(client_program_id_, kLocation, kSharedMemoryId, kSharedMemoryOffset,
7423 kBadName2Size);
7424 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
7425 EXPECT_EQ(GL_INVALID_VALUE, GetGLError());
7426 }
7427
7428
7380 // TODO(gman): Complete this test. 7429 // TODO(gman): Complete this test.
7381 // TEST_F(GLES2DecoderTest, CompressedTexImage2DGLError) { 7430 // TEST_F(GLES2DecoderTest, CompressedTexImage2DGLError) {
7382 // } 7431 // }
7383 7432
7384 // TODO(gman): BufferData 7433 // TODO(gman): BufferData
7385 7434
7386 // TODO(gman): BufferDataImmediate 7435 // TODO(gman): BufferDataImmediate
7387 7436
7388 // TODO(gman): BufferSubData 7437 // TODO(gman): BufferSubData
7389 7438
(...skipping 16 matching lines...) Expand all
7406 // TODO(gman): TexImage2DImmediate 7455 // TODO(gman): TexImage2DImmediate
7407 7456
7408 // TODO(gman): TexSubImage2DImmediate 7457 // TODO(gman): TexSubImage2DImmediate
7409 7458
7410 // TODO(gman): UseProgram 7459 // TODO(gman): UseProgram
7411 7460
7412 // TODO(gman): SwapBuffers 7461 // TODO(gman): SwapBuffers
7413 7462
7414 } // namespace gles2 7463 } // namespace gles2
7415 } // namespace gpu 7464 } // namespace gpu
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698