aboutsummaryrefslogtreecommitdiffstats
path: root/src/vulkan/wsi/wsi_common_x11.c
diff options
context:
space:
mode:
authorJason Ekstrand <[email protected]>2017-11-16 09:30:16 -0800
committerJason Ekstrand <[email protected]>2017-12-04 10:04:19 -0800
commitad4c60d6b87eb92191c638bf52ad38e7dd59f627 (patch)
tree2a0baf312d20a48f378a1066dd8664b3b9e602de /src/vulkan/wsi/wsi_common_x11.c
parent393aa3f6c929fdbcaa599597e28a3206aa09dcc2 (diff)
vulkan/wsi: Move prime blitting into queue_present
This lets us save a QueueSubmit and it also makes prime a lot less X11-specific. Also, it means we can only wait on the semaphores once instead of on every blit. Reviewed-by: Dave Airlie <[email protected]>
Diffstat (limited to 'src/vulkan/wsi/wsi_common_x11.c')
-rw-r--r--src/vulkan/wsi/wsi_common_x11.c25
1 files changed, 3 insertions, 22 deletions
diff --git a/src/vulkan/wsi/wsi_common_x11.c b/src/vulkan/wsi/wsi_common_x11.c
index 8860d8edb6e..04ce810e561 100644
--- a/src/vulkan/wsi/wsi_common_x11.c
+++ b/src/vulkan/wsi/wsi_common_x11.c
@@ -625,8 +625,6 @@ struct x11_image {
struct x11_swapchain {
struct wsi_swapchain base;
- bool use_prime_blit;
-
xcb_connection_t * conn;
xcb_window_t window;
xcb_gc_t gc;
@@ -862,24 +860,10 @@ x11_acquire_next_image(struct wsi_swapchain *anv_chain,
static VkResult
x11_queue_present(struct wsi_swapchain *anv_chain,
- VkQueue queue,
- uint32_t waitSemaphoreCount,
- const VkSemaphore *pWaitSemaphores,
uint32_t image_index,
const VkPresentRegionKHR *damage)
{
struct x11_swapchain *chain = (struct x11_swapchain *)anv_chain;
- VkResult result;
-
- if (chain->use_prime_blit) {
- result = wsi_prime_image_blit_to_linear(&chain->base,
- &chain->images[image_index].base,
- queue,
- waitSemaphoreCount,
- pWaitSemaphores);
- if (result != VK_SUCCESS)
- return result;
- }
if (chain->threaded) {
wsi_queue_push(&chain->present_queue, image_index);
@@ -947,7 +931,7 @@ x11_image_init(VkDevice device_h, struct x11_swapchain *chain,
VkResult result;
uint32_t bpp = 32;
- if (chain->use_prime_blit) {
+ if (chain->base.use_prime_blit) {
result = wsi_create_prime_image(&chain->base, pCreateInfo, &image->base);
} else {
result = wsi_create_native_image(&chain->base, pCreateInfo, &image->base);
@@ -1104,11 +1088,8 @@ x11_surface_create_swapchain(VkIcdSurfaceBase *icd_surface,
chain->threaded = false;
chain->status = VK_SUCCESS;
-
- chain->use_prime_blit = false;
- if (!wsi_x11_check_dri3_compatible(conn, local_fd)) {
- chain->use_prime_blit = true;
- }
+ if (!wsi_x11_check_dri3_compatible(conn, local_fd))
+ chain->base.use_prime_blit = true;
chain->event_id = xcb_generate_id(chain->conn);
xcb_present_select_input(chain->conn, chain->event_id, chain->window,