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

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

Issue 932963003: Add glClientWaitSync to GPU command buffer. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Make flags non-static in the command Created 5 years, 10 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
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_unittest.h" 5 #include "gpu/command_buffer/service/gles2_cmd_decoder_unittest.h"
6 6
7 #include "base/command_line.h" 7 #include "base/command_line.h"
8 #include "base/strings/string_number_conversions.h" 8 #include "base/strings/string_number_conversions.h"
9 #include "gpu/command_buffer/common/gles2_cmd_format.h" 9 #include "gpu/command_buffer/common/gles2_cmd_format.h"
10 #include "gpu/command_buffer/common/gles2_cmd_utils.h" 10 #include "gpu/command_buffer/common/gles2_cmd_utils.h"
(...skipping 247 matching lines...) Expand 10 before | Expand all | Expand 10 after
258 } 258 }
259 259
260 TEST_P(GLES2DecoderTest, IsTexture) { 260 TEST_P(GLES2DecoderTest, IsTexture) {
261 EXPECT_FALSE(DoIsTexture(client_texture_id_)); 261 EXPECT_FALSE(DoIsTexture(client_texture_id_));
262 DoBindTexture(GL_TEXTURE_2D, client_texture_id_, kServiceTextureId); 262 DoBindTexture(GL_TEXTURE_2D, client_texture_id_, kServiceTextureId);
263 EXPECT_TRUE(DoIsTexture(client_texture_id_)); 263 EXPECT_TRUE(DoIsTexture(client_texture_id_));
264 DoDeleteTexture(client_texture_id_, kServiceTextureId); 264 DoDeleteTexture(client_texture_id_, kServiceTextureId);
265 EXPECT_FALSE(DoIsTexture(client_texture_id_)); 265 EXPECT_FALSE(DoIsTexture(client_texture_id_));
266 } 266 }
267 267
268 TEST_P(GLES2DecoderTest, ClientWaitSyncValid) {
269 typedef cmds::ClientWaitSync::Result Result;
270 Result* result = static_cast<Result*>(shared_memory_address_);
271 cmds::ClientWaitSync cmd;
272 GLuint64Union mapping(0);
273 cmd.Init(client_sync_id_, GL_SYNC_FLUSH_COMMANDS_BIT,
274 mapping.param32.v0, mapping.param32.v1,
275 shared_memory_id_, shared_memory_offset_);
276 EXPECT_CALL(*gl_,
277 ClientWaitSync(reinterpret_cast<GLsync>(kServiceSyncId),
278 GL_SYNC_FLUSH_COMMANDS_BIT, 0))
279 .WillOnce(Return(GL_CONDITION_SATISFIED))
280 .RetiresOnSaturation();
281 *result = GL_WAIT_FAILED;
282 decoder_->set_unsafe_es3_apis_enabled(true);
283 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
284 EXPECT_EQ(static_cast<GLenum>(GL_CONDITION_SATISFIED), *result);
285 EXPECT_EQ(GL_NO_ERROR, GetGLError());
286 decoder_->set_unsafe_es3_apis_enabled(false);
287 EXPECT_EQ(error::kUnknownCommand, ExecuteCmd(cmd));
288 }
289
290 TEST_P(GLES2DecoderTest, ClientWaitSyncNonZeroTimeoutValid) {
291 typedef cmds::ClientWaitSync::Result Result;
292 Result* result = static_cast<Result*>(shared_memory_address_);
293 cmds::ClientWaitSync cmd;
294 GLuint64Union mapping(0xABCDEF0123456789);
295 cmd.Init(client_sync_id_, GL_SYNC_FLUSH_COMMANDS_BIT,
296 mapping.param32.v0, mapping.param32.v1,
297 shared_memory_id_, shared_memory_offset_);
298 EXPECT_CALL(*gl_,
299 ClientWaitSync(reinterpret_cast<GLsync>(kServiceSyncId),
300 GL_SYNC_FLUSH_COMMANDS_BIT, mapping.param64))
301 .WillOnce(Return(GL_CONDITION_SATISFIED))
302 .RetiresOnSaturation();
303 *result = GL_WAIT_FAILED;
304 decoder_->set_unsafe_es3_apis_enabled(true);
305 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
306 EXPECT_EQ(static_cast<GLenum>(GL_CONDITION_SATISFIED), *result);
307 EXPECT_EQ(GL_NO_ERROR, GetGLError());
308 decoder_->set_unsafe_es3_apis_enabled(false);
309 EXPECT_EQ(error::kUnknownCommand, ExecuteCmd(cmd));
310 }
311
312 TEST_P(GLES2DecoderTest, ClientWaitSyncInvalidSyncFails) {
313 typedef cmds::ClientWaitSync::Result Result;
314 Result* result = static_cast<Result*>(shared_memory_address_);
315 cmds::ClientWaitSync cmd;
316 GLuint64Union mapping(0);
317 decoder_->set_unsafe_es3_apis_enabled(true);
318 cmd.Init(kInvalidClientId, GL_SYNC_FLUSH_COMMANDS_BIT,
319 mapping.param32.v0, mapping.param32.v1,
320 shared_memory_id_, shared_memory_offset_);
321 *result = GL_WAIT_FAILED;
322 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
323 EXPECT_EQ(static_cast<GLenum>(GL_WAIT_FAILED), *result);
324 EXPECT_EQ(GL_INVALID_VALUE, GetGLError());
325 }
326
327 TEST_P(GLES2DecoderTest, ClientWaitSyncResultNotInitFails) {
328 typedef cmds::ClientWaitSync::Result Result;
329 Result* result = static_cast<Result*>(shared_memory_address_);
330 cmds::ClientWaitSync cmd;
331 GLuint64Union mapping(0);
332 decoder_->set_unsafe_es3_apis_enabled(true);
333 cmd.Init(client_sync_id_, GL_SYNC_FLUSH_COMMANDS_BIT,
334 mapping.param32.v0, mapping.param32.v1,
335 shared_memory_id_, shared_memory_offset_);
336 *result = 1; // Any value other than GL_WAIT_FAILED
337 EXPECT_NE(error::kNoError, ExecuteCmd(cmd));
338 }
339
340 TEST_P(GLES2DecoderTest, ClientWaitSyncBadSharedMemoryFails) {
341 typedef cmds::ClientWaitSync::Result Result;
342 Result* result = static_cast<Result*>(shared_memory_address_);
343 cmds::ClientWaitSync cmd;
344 GLuint64Union mapping(0);
345 decoder_->set_unsafe_es3_apis_enabled(true);
346 *result = GL_WAIT_FAILED;
347 cmd.Init(client_sync_id_, GL_SYNC_FLUSH_COMMANDS_BIT,
348 mapping.param32.v0, mapping.param32.v1,
349 kInvalidSharedMemoryId, shared_memory_offset_);
350 EXPECT_NE(error::kNoError, ExecuteCmd(cmd));
351
352 *result = GL_WAIT_FAILED;
353 cmd.Init(client_sync_id_, GL_SYNC_FLUSH_COMMANDS_BIT,
354 mapping.param32.v0, mapping.param32.v1,
355 shared_memory_id_, kInvalidSharedMemoryOffset);
356 EXPECT_NE(error::kNoError, ExecuteCmd(cmd));
357 }
358
268 TEST_P(GLES2DecoderManualInitTest, BindGeneratesResourceFalse) { 359 TEST_P(GLES2DecoderManualInitTest, BindGeneratesResourceFalse) {
269 InitState init; 360 InitState init;
270 InitDecoder(init); 361 InitDecoder(init);
271 362
272 BindTexture cmd1; 363 BindTexture cmd1;
273 cmd1.Init(GL_TEXTURE_2D, kInvalidClientId); 364 cmd1.Init(GL_TEXTURE_2D, kInvalidClientId);
274 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd1)); 365 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd1));
275 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); 366 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError());
276 367
277 BindBuffer cmd2; 368 BindBuffer cmd2;
(...skipping 870 matching lines...) Expand 10 before | Expand all | Expand 10 after
1148 INSTANTIATE_TEST_CASE_P(Service, GLES2DecoderManualInitTest, ::testing::Bool()); 1239 INSTANTIATE_TEST_CASE_P(Service, GLES2DecoderManualInitTest, ::testing::Bool());
1149 1240
1150 INSTANTIATE_TEST_CASE_P(Service, 1241 INSTANTIATE_TEST_CASE_P(Service,
1151 GLES2DecoderRGBBackbufferTest, 1242 GLES2DecoderRGBBackbufferTest,
1152 ::testing::Bool()); 1243 ::testing::Bool());
1153 1244
1154 INSTANTIATE_TEST_CASE_P(Service, GLES2DecoderDoCommandsTest, ::testing::Bool()); 1245 INSTANTIATE_TEST_CASE_P(Service, GLES2DecoderDoCommandsTest, ::testing::Bool());
1155 1246
1156 } // namespace gles2 1247 } // namespace gles2
1157 } // namespace gpu 1248 } // namespace gpu
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698