Re: [Mesa-dev] [PATCH v2 13/32] vulkan/wsi: Implement prime in a completely generic way

2017-11-30 Thread Chad Versace
On Tue 28 Nov 2017, Jason Ekstrand wrote:
> ---
>  src/amd/vulkan/radv_wsi.c   | 137 +++
>  src/intel/vulkan/anv_wsi.c  |  14 +-
>  src/vulkan/wsi/wsi_common.c | 341 
> +++-
>  src/vulkan/wsi/wsi_common.h |  54 +-
>  src/vulkan/wsi/wsi_common_private.h |  16 ++
>  src/vulkan/wsi/wsi_common_wayland.c |   6 +-
>  src/vulkan/wsi/wsi_common_x11.c |  87 +
>  7 files changed, 475 insertions(+), 180 deletions(-)
> 
> diff --git a/src/amd/vulkan/radv_wsi.c b/src/amd/vulkan/radv_wsi.c
> index 247f7cc..589eb5c 100644
> --- a/src/amd/vulkan/radv_wsi.c
> +++ b/src/amd/vulkan/radv_wsi.c
> @@ -40,6 +40,13 @@ radv_wsi_proc_addr(VkPhysicalDevice physicalDevice, const 
> char *pName)
>   return radv_lookup_entrypoint(pName);
>  }
>  
> +static uint32_t
> +anv_wsi_queue_get_family_index(VkQueue _queue)

This function should have the 'radv' prefix, not 'anv'.

Other than that, this patch is
Reviewed-by: Chad Versace 
___
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev


[Mesa-dev] [PATCH v2 13/32] vulkan/wsi: Implement prime in a completely generic way

2017-11-28 Thread Jason Ekstrand
---
 src/amd/vulkan/radv_wsi.c   | 137 +++
 src/intel/vulkan/anv_wsi.c  |  14 +-
 src/vulkan/wsi/wsi_common.c | 341 +++-
 src/vulkan/wsi/wsi_common.h |  54 +-
 src/vulkan/wsi/wsi_common_private.h |  16 ++
 src/vulkan/wsi/wsi_common_wayland.c |   6 +-
 src/vulkan/wsi/wsi_common_x11.c |  87 +
 7 files changed, 475 insertions(+), 180 deletions(-)

diff --git a/src/amd/vulkan/radv_wsi.c b/src/amd/vulkan/radv_wsi.c
index 247f7cc..589eb5c 100644
--- a/src/amd/vulkan/radv_wsi.c
+++ b/src/amd/vulkan/radv_wsi.c
@@ -40,6 +40,13 @@ radv_wsi_proc_addr(VkPhysicalDevice physicalDevice, const 
char *pName)
return radv_lookup_entrypoint(pName);
 }
 
+static uint32_t
+anv_wsi_queue_get_family_index(VkQueue _queue)
+{
+   RADV_FROM_HANDLE(radv_queue, queue, _queue);
+   return queue->queue_family_index;
+}
+
 VkResult
 radv_init_wsi(struct radv_physical_device *physical_device)
 {
@@ -49,6 +56,9 @@ radv_init_wsi(struct radv_physical_device *physical_device)
radv_physical_device_to_handle(physical_device),
radv_wsi_proc_addr);
 
+   physical_device->wsi_device.queue_get_family_index =
+   anv_wsi_queue_get_family_index;
+
 #ifdef VK_USE_PLATFORM_XCB_KHR
result = wsi_x11_init_wsi(_device->wsi_device, 
_device->instance->alloc);
if (result != VK_SUCCESS)
@@ -151,8 +161,6 @@ static VkResult
 radv_wsi_image_create(VkDevice device_h,
  const VkSwapchainCreateInfoKHR *pCreateInfo,
  const VkAllocationCallbacks* pAllocator,
- bool needs_linear_copy,
- bool linear,
  struct wsi_image *wsi_image)
 {
VkResult result = VK_SUCCESS;
@@ -178,7 +186,7 @@ radv_wsi_image_create(VkDevice device_h,
   .arrayLayers = 1,
   .samples = 1,
   /* FIXME: Need a way to use 
X tiling to allow scanout */
-  .tiling = linear ? 
VK_IMAGE_TILING_LINEAR : VK_IMAGE_TILING_OPTIMAL,
+  .tiling = 
VK_IMAGE_TILING_OPTIMAL,
   .usage = 
VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT,
   .flags = 0,
   },
@@ -203,7 +211,7 @@ radv_wsi_image_create(VkDevice device_h,
int memory_type_index = -1;
for (int i = 0; i < 
device->physical_device->memory_properties.memoryTypeCount; ++i) {
bool is_local = 
!!(device->physical_device->memory_properties.memoryTypes[i].propertyFlags & 
VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT);
-   if ((linear && !is_local) || (!linear && is_local)) {
+   if (is_local) {
memory_type_index = i;
break;
}
@@ -228,16 +236,10 @@ radv_wsi_image_create(VkDevice device_h,
 
radv_BindImageMemory(device_h, image_h, memory_h, 0);
 
-   /*
-* return the fd for the image in the no copy mode,
-* or the fd for the linear image if a copy is required.
-*/
-   if (!needs_linear_copy || (needs_linear_copy && linear)) {
-   RADV_FROM_HANDLE(radv_device_memory, memory, memory_h);
-   if (!radv_get_memory_fd(device, memory, ))
-   goto fail_alloc_memory;
-   wsi_image->fd = fd;
-   }
+   RADV_FROM_HANDLE(radv_device_memory, memory, memory_h);
+   if (!radv_get_memory_fd(device, memory, ))
+   goto fail_alloc_memory;
+   wsi_image->fd = fd;
 
surface = >surface;
 
@@ -277,94 +279,6 @@ static const struct wsi_image_fns radv_wsi_image_fns = {
.free_wsi_image = radv_wsi_image_free,
 };
 
-#define NUM_PRIME_POOLS RADV_QUEUE_TRANSFER
-static void
-radv_wsi_free_prime_command_buffers(struct radv_device *device,
-   struct wsi_swapchain *swapchain)
-{
-   const int num_pools = NUM_PRIME_POOLS;
-   const int num_images = swapchain->image_count;
-   int i;
-   for (i = 0; i < num_pools; i++) {
-   radv_FreeCommandBuffers(radv_device_to_handle(device),
-swapchain->cmd_pools[i],
-swapchain->image_count,
->cmd_buffers[i * num_images]);
-
-   radv_DestroyCommandPool(radv_device_to_handle(device),
-swapchain->cmd_pools[i],
->alloc);
-   }
-}
-
-static VkResult
-radv_wsi_create_prime_command_buffers(struct radv_device *device,
- const VkAllocationCallbacks *alloc,
-