dEQP-VK.wsi.display.get_display_plane_capabilities2
dEQP-VK.synchronization.smoke.fences
dEQP-VK.synchronization.smoke.semaphores
-dEQP-VK.synchronization.smoke.events
dEQP-VK.synchronization.basic.fence.one
dEQP-VK.synchronization.basic.fence.multi
dEQP-VK.synchronization.basic.fence.empty_submit
dEQP-VK.synchronization.basic.semaphore.chain
dEQP-VK.synchronization.basic.event.host_set_reset
dEQP-VK.synchronization.basic.event.device_set_reset
-dEQP-VK.synchronization.basic.event.host_set_device_wait
dEQP-VK.synchronization.basic.event.single_submit_multi_command_buffer
dEQP-VK.synchronization.basic.event.multi_submit_multi_command_buffer
dEQP-VK.synchronization.basic.event.multi_secondary_command_buffer
dEQP-VK.wsi.android.swapchain.modify.resize
dEQP-VK.synchronization.smoke.fences
dEQP-VK.synchronization.smoke.semaphores
-dEQP-VK.synchronization.smoke.events
dEQP-VK.sparse_resources.buffer.transfer.sparse_binding.buffer_size_2_10
dEQP-VK.sparse_resources.buffer.transfer.sparse_binding.buffer_size_2_12
dEQP-VK.sparse_resources.buffer.transfer.sparse_binding.buffer_size_2_16
dEQP-VK.wsi.android.swapchain.modify.resize
dEQP-VK.synchronization.smoke.fences
dEQP-VK.synchronization.smoke.semaphores
-dEQP-VK.synchronization.smoke.events
dEQP-VK.sparse_resources.buffer.transfer.sparse_binding.buffer_size_2_10
dEQP-VK.sparse_resources.buffer.transfer.sparse_binding.buffer_size_2_12
dEQP-VK.sparse_resources.buffer.transfer.sparse_binding.buffer_size_2_16
return tcu::TestStatus::pass("Device set and reset event tests pass");
}
-tcu::TestStatus deviceWaitForEventCase (Context& context)
-{
- const DeviceInterface& vk = context.getDeviceInterface();
- const VkDevice device = context.getDevice();
- const VkQueue queue = context.getUniversalQueue();
- const deUint32 queueFamilyIndex = context.getUniversalQueueFamilyIndex();
- const Unique<VkFence> fence (createFence(vk, device));
- const Unique<VkCommandPool> cmdPool (createCommandPool(vk, device, VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT, queueFamilyIndex));
- const Unique<VkCommandBuffer> cmdBuffer (makeCommandBuffer(vk, device, *cmdPool));
- const VkSubmitInfo submitInfo =
- {
- VK_STRUCTURE_TYPE_SUBMIT_INFO, // VkStructureType sType;
- DE_NULL, // const void* pNext;
- 0u, // deUint32 waitSemaphoreCount;
- DE_NULL, // const VkSemaphore* pWaitSemaphores;
- DE_NULL, // const VkPipelineStageFlags* pWaitDstStageMask;
- 1u, // deUint32 commandBufferCount;
- &cmdBuffer.get(), // const VkCommandBuffer* pCommandBuffers;
- 0u, // deUint32 signalSemaphoreCount;
- DE_NULL, // const VkSemaphore* pSignalSemaphores;
- };
- const VkEventCreateInfo eventInfo =
- {
- VK_STRUCTURE_TYPE_EVENT_CREATE_INFO,
- DE_NULL,
- 0
- };
- const Unique<VkEvent> event (createEvent(vk, device, &eventInfo, DE_NULL));
-
- beginCommandBuffer(vk, *cmdBuffer);
- vk.cmdWaitEvents(*cmdBuffer, 1u, &event.get(), VK_PIPELINE_STAGE_HOST_BIT, VK_PIPELINE_STAGE_ALL_COMMANDS_BIT, 0u, DE_NULL, 0u, DE_NULL, 0u, DE_NULL);
- endCommandBuffer(vk, *cmdBuffer);
-
- VK_CHECK(vk.queueSubmit(queue, 1u, &submitInfo, *fence));
- if (VK_TIMEOUT != vk.waitForFences(device, 1u, &fence.get(), DE_TRUE, SHORT_FENCE_WAIT))
- return tcu::TestStatus::fail("Queue should not end execution");
-
- if (VK_SUCCESS != vk.setEvent(device, *event))
- return tcu::TestStatus::fail("Couldn't set event");
-
- if (VK_SUCCESS != vk.waitForFences(device, 1u, &fence.get(), DE_TRUE, LONG_FENCE_WAIT))
- return tcu::TestStatus::fail("Queue should end execution");
-
- return tcu::TestStatus::pass("Device wait for event tests pass");
-}
-
tcu::TestStatus singleSubmissionCase (Context& context)
{
enum {SET=0, WAIT, COUNT};
de::MovePtr<tcu::TestCaseGroup> basicTests(new tcu::TestCaseGroup(testCtx, "event", "Basic event tests"));
addFunctionCase(basicTests.get(), "host_set_reset", "Basic event tests set and reset on host", hostResetSetEventCase);
addFunctionCase(basicTests.get(), "device_set_reset", "Basic event tests set and reset on device", deviceResetSetEventCase);
- addFunctionCase(basicTests.get(), "host_set_device_wait", "Wait for event on device test", deviceWaitForEventCase);
addFunctionCase(basicTests.get(), "single_submit_multi_command_buffer", "Wait and set event single submission on device", singleSubmissionCase);
addFunctionCase(basicTests.get(), "multi_submit_multi_command_buffer", "Wait and set event mutli submission on device", multiSubmissionCase);
addFunctionCase(basicTests.get(), "multi_secondary_command_buffer", "Event used on secondary command buffer ", secondaryCommandBufferCase);
return tcu::TestStatus::pass("synchronization-semaphores passed");
}
-tcu::TestStatus testEvents (Context& context)
-{
- TestLog& log = context.getTestContext().getLog();
- const DeviceInterface& deviceInterface = context.getDeviceInterface();
- VkDevice device = context.getDevice();
- const deUint32 queueFamilyIdx = context.getUniversalQueueFamilyIndex();
- Allocator& allocator = context.getDefaultAllocator();
- VkQueue queue = context.getUniversalQueue();
- VkResult testStatus;
- VkResult eventStatus;
- TestContext testContext (deviceInterface, device, queueFamilyIdx, context.getBinaryCollection(), allocator);
- Unique<VkEvent> event (createEvent(deviceInterface, device));
- VkSubmitInfo submitInfo;
- void* resultImage;
-
- const tcu::Vec4 vertices1[] =
- {
- tcu::Vec4( 0.5f, 0.5f, 0.0f, 1.0f),
- tcu::Vec4(-0.5f, 0.5f, 0.0f, 1.0f),
- tcu::Vec4( 0.0f, -0.5f, 0.0f, 1.0f)
- };
-
- testContext.vertices = vertices1;
- testContext.numVertices = DE_LENGTH_OF_ARRAY(vertices1);
- testContext.renderDimension = tcu::IVec2(256, 256);
- testContext.waitEvent = true;
- testContext.event = event.get();
- testContext.renderSize = sizeof(deUint32) * testContext.renderDimension.x() * testContext.renderDimension.y();
-
- createCommandBuffer(deviceInterface, device, queueFamilyIdx, &testContext.cmdBuffer, &testContext.commandPool);
- generateWork(testContext);
-
- initSubmitInfo(&submitInfo, 1);
- submitInfo.pCommandBuffers = &testContext.cmdBuffer.get();
-
- // 6.3 An event is initially in the unsignaled state
- eventStatus = deviceInterface.getEventStatus(device, event.get());
- if (eventStatus != VK_EVENT_RESET)
- {
- log << TestLog::Message << "testSynchronizationPrimitives event should be reset but status is " << getResultName(eventStatus) << TestLog::EndMessage;
- return tcu::TestStatus::fail("Event in incorrect status");
- }
-
- // The recorded command buffer should wait at the top of the graphics pipe for an event signaled by the host and so should not
- // make forward progress as long as the event is not signaled
- VK_CHECK(deviceInterface.queueSubmit(queue, 1, &submitInfo, testContext.fences[0]));
-
- testStatus = deviceInterface.waitForFences(device, 1, &testContext.fences[0], true, 10000000);
- if (testStatus != VK_TIMEOUT)
- {
- log << TestLog::Message << "testSynchronizationPrimitives failed to wait for set event from host." << TestLog::EndMessage;
- return tcu::TestStatus::fail("failed to wait for event set from host");
- }
-
- // Should allow the recorded command buffer to finally make progress
- VK_CHECK(deviceInterface.setEvent(device, event.get()));
- eventStatus = deviceInterface.getEventStatus(device, event.get());
- if (eventStatus != VK_EVENT_SET)
- {
- log << TestLog::Message << "testEvents failed to transition event to signaled state via setEvent call from host" << TestLog::EndMessage;
- return tcu::TestStatus::fail("failed to signal event from host");
- }
-
- testStatus = deviceInterface.waitForFences(device, 1, &testContext.fences[0], true, ~(0ull));
- if (testStatus != VK_SUCCESS)
- {
- log << TestLog::Message << "testSynchronizationPrimitives failed to proceed after set event from host." << TestLog::EndMessage;
- return tcu::TestStatus::fail("failed to proceed after event set from host");
- }
-
- invalidateAlloc(deviceInterface, device, *testContext.renderReadBuffer);
- resultImage = testContext.renderReadBuffer->getHostPtr();
-
- log << TestLog::Image( "result",
- "result",
- tcu::ConstPixelBufferAccess(tcu::TextureFormat(
- tcu::TextureFormat::RGBA, tcu::TextureFormat::UNORM_INT8),
- testContext.renderDimension.x(),
- testContext.renderDimension.y(),
- 1,
- resultImage));
-
- return tcu::TestStatus::pass("synchronization-events passed");
-}
-
} // anonymous
tcu::TestCaseGroup* createSmokeTests (tcu::TestContext& textCtx)
addFunctionCaseWithPrograms(synchTests.get(), "fences", "", buildShaders, testFences);
addFunctionCaseWithPrograms(synchTests.get(), "semaphores", "", buildShaders, testSemaphores);
- addFunctionCaseWithPrograms(synchTests.get(), "events", "", buildShaders, testEvents);
return synchTests.release();
}
dEQP-VK.wsi.win32.swapchain.render.basic
dEQP-VK.synchronization.smoke.fences
dEQP-VK.synchronization.smoke.semaphores
-dEQP-VK.synchronization.smoke.events
dEQP-VK.synchronization.basic.fence.one
dEQP-VK.synchronization.basic.fence.multi
dEQP-VK.synchronization.basic.semaphore.one_queue
dEQP-VK.synchronization.basic.semaphore.multi_queue
dEQP-VK.synchronization.basic.event.host_set_reset
dEQP-VK.synchronization.basic.event.device_set_reset
-dEQP-VK.synchronization.basic.event.host_set_device_wait
dEQP-VK.synchronization.basic.event.single_submit_multi_command_buffer
dEQP-VK.synchronization.basic.event.multi_submit_multi_command_buffer
dEQP-VK.synchronization.basic.event.multi_secondary_command_buffer
dEQP-VK.wsi.win32.swapchain.render.basic
dEQP-VK.synchronization.smoke.fences
dEQP-VK.synchronization.smoke.semaphores
-dEQP-VK.synchronization.smoke.events
dEQP-VK.synchronization.basic.fence.one
dEQP-VK.synchronization.basic.fence.multi
dEQP-VK.synchronization.basic.semaphore.one_queue
dEQP-VK.synchronization.basic.semaphore.multi_queue
dEQP-VK.synchronization.basic.event.host_set_reset
dEQP-VK.synchronization.basic.event.device_set_reset
-dEQP-VK.synchronization.basic.event.host_set_device_wait
dEQP-VK.synchronization.basic.event.single_submit_multi_command_buffer
dEQP-VK.synchronization.basic.event.multi_submit_multi_command_buffer
dEQP-VK.synchronization.basic.event.multi_secondary_command_buffer
dEQP-VK.wsi.win32.display_timing.mailbox.display_timing
dEQP-VK.synchronization.smoke.fences
dEQP-VK.synchronization.smoke.semaphores
-dEQP-VK.synchronization.smoke.events
dEQP-VK.synchronization.basic.fence.one
dEQP-VK.synchronization.basic.fence.multi
dEQP-VK.synchronization.basic.fence.empty_submit
dEQP-VK.synchronization.basic.semaphore.multi_queue
dEQP-VK.synchronization.basic.event.host_set_reset
dEQP-VK.synchronization.basic.event.device_set_reset
-dEQP-VK.synchronization.basic.event.host_set_device_wait
dEQP-VK.synchronization.basic.event.single_submit_multi_command_buffer
dEQP-VK.synchronization.basic.event.multi_submit_multi_command_buffer
dEQP-VK.synchronization.basic.event.multi_secondary_command_buffer
dEQP-VK.wsi.win32.shared_presentable_image.scale_none.inherit.inherit.continuous
dEQP-VK.synchronization.smoke.fences
dEQP-VK.synchronization.smoke.semaphores
-dEQP-VK.synchronization.smoke.events
dEQP-VK.synchronization.basic.fence.one
dEQP-VK.synchronization.basic.fence.multi
dEQP-VK.synchronization.basic.fence.empty_submit
dEQP-VK.synchronization.basic.semaphore.multi_queue
dEQP-VK.synchronization.basic.event.host_set_reset
dEQP-VK.synchronization.basic.event.device_set_reset
-dEQP-VK.synchronization.basic.event.host_set_device_wait
dEQP-VK.synchronization.basic.event.single_submit_multi_command_buffer
dEQP-VK.synchronization.basic.event.multi_submit_multi_command_buffer
dEQP-VK.synchronization.basic.event.multi_secondary_command_buffer
dEQP-VK.wsi.display.get_display_plane_capabilities2
dEQP-VK.synchronization.smoke.fences
dEQP-VK.synchronization.smoke.semaphores
-dEQP-VK.synchronization.smoke.events
dEQP-VK.synchronization.basic.fence.one
dEQP-VK.synchronization.basic.fence.multi
dEQP-VK.synchronization.basic.fence.empty_submit
dEQP-VK.synchronization.basic.semaphore.chain
dEQP-VK.synchronization.basic.event.host_set_reset
dEQP-VK.synchronization.basic.event.device_set_reset
-dEQP-VK.synchronization.basic.event.host_set_device_wait
dEQP-VK.synchronization.basic.event.single_submit_multi_command_buffer
dEQP-VK.synchronization.basic.event.multi_submit_multi_command_buffer
dEQP-VK.synchronization.basic.event.multi_secondary_command_buffer
dEQP-VK.wsi.display.get_display_plane_capabilities2
dEQP-VK.synchronization.smoke.fences
dEQP-VK.synchronization.smoke.semaphores
-dEQP-VK.synchronization.smoke.events
dEQP-VK.synchronization.basic.fence.one
dEQP-VK.synchronization.basic.fence.multi
dEQP-VK.synchronization.basic.fence.empty_submit
dEQP-VK.synchronization.basic.semaphore.chain
dEQP-VK.synchronization.basic.event.host_set_reset
dEQP-VK.synchronization.basic.event.device_set_reset
-dEQP-VK.synchronization.basic.event.host_set_device_wait
dEQP-VK.synchronization.basic.event.single_submit_multi_command_buffer
dEQP-VK.synchronization.basic.event.multi_submit_multi_command_buffer
dEQP-VK.synchronization.basic.event.multi_secondary_command_buffer
dEQP-VK.wsi.display.get_display_plane_capabilities2
dEQP-VK.synchronization.smoke.fences
dEQP-VK.synchronization.smoke.semaphores
-dEQP-VK.synchronization.smoke.events
dEQP-VK.synchronization.basic.fence.one
dEQP-VK.synchronization.basic.fence.multi
dEQP-VK.synchronization.basic.fence.empty_submit
dEQP-VK.synchronization.basic.semaphore.chain
dEQP-VK.synchronization.basic.event.host_set_reset
dEQP-VK.synchronization.basic.event.device_set_reset
-dEQP-VK.synchronization.basic.event.host_set_device_wait
dEQP-VK.synchronization.basic.event.single_submit_multi_command_buffer
dEQP-VK.synchronization.basic.event.multi_submit_multi_command_buffer
dEQP-VK.synchronization.basic.event.multi_secondary_command_buffer
dEQP-VK.wsi.display.get_display_plane_capabilities2
dEQP-VK.synchronization.smoke.fences
dEQP-VK.synchronization.smoke.semaphores
-dEQP-VK.synchronization.smoke.events
dEQP-VK.synchronization.basic.fence.one
dEQP-VK.synchronization.basic.fence.multi
dEQP-VK.synchronization.basic.fence.empty_submit
dEQP-VK.synchronization.basic.semaphore.chain
dEQP-VK.synchronization.basic.event.host_set_reset
dEQP-VK.synchronization.basic.event.device_set_reset
-dEQP-VK.synchronization.basic.event.host_set_device_wait
dEQP-VK.synchronization.basic.event.single_submit_multi_command_buffer
dEQP-VK.synchronization.basic.event.multi_submit_multi_command_buffer
dEQP-VK.synchronization.basic.event.multi_secondary_command_buffer
dEQP-VK.wsi.display.get_display_plane_capabilities2
dEQP-VK.synchronization.smoke.fences
dEQP-VK.synchronization.smoke.semaphores
-dEQP-VK.synchronization.smoke.events
dEQP-VK.synchronization.basic.fence.one
dEQP-VK.synchronization.basic.fence.multi
dEQP-VK.synchronization.basic.fence.empty_submit
dEQP-VK.synchronization.basic.semaphore.chain
dEQP-VK.synchronization.basic.event.host_set_reset
dEQP-VK.synchronization.basic.event.device_set_reset
-dEQP-VK.synchronization.basic.event.host_set_device_wait
dEQP-VK.synchronization.basic.event.single_submit_multi_command_buffer
dEQP-VK.synchronization.basic.event.multi_submit_multi_command_buffer
dEQP-VK.synchronization.basic.event.multi_secondary_command_buffer
dEQP-VK.wsi.display.get_display_plane_capabilities2
dEQP-VK.synchronization.smoke.fences
dEQP-VK.synchronization.smoke.semaphores
-dEQP-VK.synchronization.smoke.events
dEQP-VK.synchronization.basic.fence.one
dEQP-VK.synchronization.basic.fence.multi
dEQP-VK.synchronization.basic.fence.empty_submit
dEQP-VK.synchronization.basic.semaphore.chain
dEQP-VK.synchronization.basic.event.host_set_reset
dEQP-VK.synchronization.basic.event.device_set_reset
-dEQP-VK.synchronization.basic.event.host_set_device_wait
dEQP-VK.synchronization.basic.event.single_submit_multi_command_buffer
dEQP-VK.synchronization.basic.event.multi_submit_multi_command_buffer
dEQP-VK.synchronization.basic.event.multi_secondary_command_buffer
dEQP-VK.wsi.display.get_display_plane_capabilities2
dEQP-VK.synchronization.smoke.fences
dEQP-VK.synchronization.smoke.semaphores
-dEQP-VK.synchronization.smoke.events
dEQP-VK.synchronization.basic.fence.one
dEQP-VK.synchronization.basic.fence.multi
dEQP-VK.synchronization.basic.fence.empty_submit
dEQP-VK.synchronization.basic.semaphore.chain
dEQP-VK.synchronization.basic.event.host_set_reset
dEQP-VK.synchronization.basic.event.device_set_reset
-dEQP-VK.synchronization.basic.event.host_set_device_wait
dEQP-VK.synchronization.basic.event.single_submit_multi_command_buffer
dEQP-VK.synchronization.basic.event.multi_submit_multi_command_buffer
dEQP-VK.synchronization.basic.event.multi_secondary_command_buffer
dEQP-VK.wsi.display.get_display_plane_capabilities2
dEQP-VK.synchronization.smoke.fences
dEQP-VK.synchronization.smoke.semaphores
-dEQP-VK.synchronization.smoke.events
dEQP-VK.synchronization.basic.fence.one
dEQP-VK.synchronization.basic.fence.multi
dEQP-VK.synchronization.basic.fence.empty_submit
dEQP-VK.synchronization.basic.semaphore.chain
dEQP-VK.synchronization.basic.event.host_set_reset
dEQP-VK.synchronization.basic.event.device_set_reset
-dEQP-VK.synchronization.basic.event.host_set_device_wait
dEQP-VK.synchronization.basic.event.single_submit_multi_command_buffer
dEQP-VK.synchronization.basic.event.multi_submit_multi_command_buffer
dEQP-VK.synchronization.basic.event.multi_secondary_command_buffer
dEQP-VK.wsi.display.get_display_plane_capabilities2
dEQP-VK.synchronization.smoke.fences
dEQP-VK.synchronization.smoke.semaphores
-dEQP-VK.synchronization.smoke.events
dEQP-VK.synchronization.basic.fence.one
dEQP-VK.synchronization.basic.fence.multi
dEQP-VK.synchronization.basic.fence.empty_submit
dEQP-VK.synchronization.basic.semaphore.chain
dEQP-VK.synchronization.basic.event.host_set_reset
dEQP-VK.synchronization.basic.event.device_set_reset
-dEQP-VK.synchronization.basic.event.host_set_device_wait
dEQP-VK.synchronization.basic.event.single_submit_multi_command_buffer
dEQP-VK.synchronization.basic.event.multi_submit_multi_command_buffer
dEQP-VK.synchronization.basic.event.multi_secondary_command_buffer
dEQP-VK.wsi.display.get_display_plane_capabilities2
dEQP-VK.synchronization.smoke.fences
dEQP-VK.synchronization.smoke.semaphores
-dEQP-VK.synchronization.smoke.events
dEQP-VK.synchronization.basic.fence.one
dEQP-VK.synchronization.basic.fence.multi
dEQP-VK.synchronization.basic.fence.empty_submit
dEQP-VK.synchronization.basic.semaphore.chain
dEQP-VK.synchronization.basic.event.host_set_reset
dEQP-VK.synchronization.basic.event.device_set_reset
-dEQP-VK.synchronization.basic.event.host_set_device_wait
dEQP-VK.synchronization.basic.event.single_submit_multi_command_buffer
dEQP-VK.synchronization.basic.event.multi_submit_multi_command_buffer
dEQP-VK.synchronization.basic.event.multi_secondary_command_buffer
dEQP-VK.wsi.display.get_display_plane_capabilities2
dEQP-VK.synchronization.smoke.fences
dEQP-VK.synchronization.smoke.semaphores
-dEQP-VK.synchronization.smoke.events
dEQP-VK.synchronization.basic.fence.one
dEQP-VK.synchronization.basic.fence.multi
dEQP-VK.synchronization.basic.fence.empty_submit
dEQP-VK.synchronization.basic.semaphore.chain
dEQP-VK.synchronization.basic.event.host_set_reset
dEQP-VK.synchronization.basic.event.device_set_reset
-dEQP-VK.synchronization.basic.event.host_set_device_wait
dEQP-VK.synchronization.basic.event.single_submit_multi_command_buffer
dEQP-VK.synchronization.basic.event.multi_submit_multi_command_buffer
dEQP-VK.synchronization.basic.event.multi_secondary_command_buffer