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

Unified Diff: gpu/command_buffer/service/gles2_cmd_decoder_unittest.cc

Issue 2021603002: gpu: Add a new extension CHROMIUM_deschedule. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 7 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 side-by-side diff with in-line comments
Download patch
Index: gpu/command_buffer/service/gles2_cmd_decoder_unittest.cc
diff --git a/gpu/command_buffer/service/gles2_cmd_decoder_unittest.cc b/gpu/command_buffer/service/gles2_cmd_decoder_unittest.cc
index ec7eb2b69b8ee682c20192672c6fb17d4fd1b107..7e8c44fdc6e4f35d39e052b585582e06039c183d 100644
--- a/gpu/command_buffer/service/gles2_cmd_decoder_unittest.cc
+++ b/gpu/command_buffer/service/gles2_cmd_decoder_unittest.cc
@@ -1692,6 +1692,76 @@ TEST_P(GLES2DecoderDoCommandsTest, DoCommandsBadArgSize) {
EXPECT_EQ(entries_per_cmd_ + cmds_[1].header.size, num_processed);
}
+class GLES2DecoderDescheduleUntilFinishedTest : public GLES2DecoderTest {
+ public:
+ GLES2DecoderDescheduleUntilFinishedTest() {
+ }
+
+ void SetUp() override {
+ InitState init;
+ init.gl_version = "4.4";
+ init.extensions += " GL_ARB_compatibility GL_ARB_sync";
+ InitDecoder(init);
+
+ GetDecoder()->SetDescheduleUntilFinishedCallback(
+ base::Bind(&GLES2DecoderDescheduleUntilFinishedTest::
+ DescheduleUntilFinishedCallback,
+ base::Unretained(this)));
+ GetDecoder()->SetRescheduleAfterFinishedCallback(
+ base::Bind(&GLES2DecoderDescheduleUntilFinishedTest::
+ RescheduleAfterFinishedCallback,
+ base::Unretained(this)));
+
+ EXPECT_CALL(*gl_, FenceSync(GL_SYNC_GPU_COMMANDS_COMPLETE, 0))
+ .Times(1)
+ .WillOnce(Return(sync_service_id_))
+ .RetiresOnSaturation();
+ EXPECT_CALL(*gl_, IsSync(sync_service_id_)).WillRepeatedly(Return(GL_TRUE));
+ EXPECT_CALL(*gl_, Flush()).RetiresOnSaturation();
+ EXPECT_CALL(*gl_, DeleteSync(sync_service_id_))
+ .Times(1)
+ .RetiresOnSaturation();
+ }
+
+ void DescheduleUntilFinishedCallback() {
+ deschedule_until_finished_callback_count_++;
+ }
+ void RescheduleAfterFinishedCallback() {
+ reschedule_after_finished_callback_count_++;
+ }
+
+ protected:
+ int deschedule_until_finished_callback_count_ = 0;
+ int reschedule_after_finished_callback_count_ = 0;
+ GLsync sync_service_id_ = reinterpret_cast<GLsync>(0x15);
+};
+
+TEST_P(GLES2DecoderDescheduleUntilFinishedTest, AlreadySignalled) {
+ EXPECT_CALL(*gl_, ClientWaitSync(sync_service_id_, 0, 0))
+ .Times(1)
+ .WillOnce(Return(GL_ALREADY_SIGNALED))
+ .RetiresOnSaturation();
+
+ cmds::DescheduleUntilFinishedCHROMIUM cmd;
+ cmd.Init();
+ EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
+ EXPECT_EQ(0, deschedule_until_finished_callback_count_);
+ EXPECT_EQ(0, reschedule_after_finished_callback_count_);
+}
+
+TEST_P(GLES2DecoderDescheduleUntilFinishedTest, NotYetSignalled) {
+ EXPECT_CALL(*gl_, ClientWaitSync(sync_service_id_, 0, 0))
+ .Times(1)
+ .WillOnce(Return(GL_TIMEOUT_EXPIRED))
+ .RetiresOnSaturation();
+
+ cmds::DescheduleUntilFinishedCHROMIUM cmd;
+ cmd.Init();
+ EXPECT_EQ(error::kDeferLaterCommands, ExecuteCmd(cmd));
+ EXPECT_EQ(1, deschedule_until_finished_callback_count_);
+ EXPECT_EQ(0, reschedule_after_finished_callback_count_);
+}
+
void GLES3DecoderWithESSL3ShaderTest::SetUp() {
base::CommandLine command_line(0, nullptr);
command_line.AppendSwitch(switches::kEnableUnsafeES3APIs);
@@ -1715,6 +1785,10 @@ INSTANTIATE_TEST_CASE_P(Service,
INSTANTIATE_TEST_CASE_P(Service, GLES2DecoderDoCommandsTest, ::testing::Bool());
+INSTANTIATE_TEST_CASE_P(Service,
+ GLES2DecoderDescheduleUntilFinishedTest,
+ ::testing::Bool());
+
INSTANTIATE_TEST_CASE_P(Service, GLES3DecoderTest, ::testing::Bool());
INSTANTIATE_TEST_CASE_P(Service,
« no previous file with comments | « gpu/command_buffer/service/gles2_cmd_decoder_passthrough.cc ('k') | gpu/command_buffer/service/in_process_command_buffer.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698