radv: add code to set gs_table_depth.
authorDave Airlie <airlied@redhat.com>
Wed, 18 Jan 2017 03:54:17 +0000 (13:54 +1000)
committerDave Airlie <airlied@redhat.com>
Mon, 30 Jan 2017 23:28:24 +0000 (09:28 +1000)
Review-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Signed-off-by: Dave Airlie <airlied@redhat.com>
src/amd/vulkan/radv_device.c
src/amd/vulkan/radv_private.h

index 23cf0d099c06f97791a76dfdcdca621fa186b10d..b7978bb16a23aff40caadec8b1d98e23fec89f9e 100644 (file)
@@ -768,6 +768,36 @@ radv_queue_finish(struct radv_queue *queue)
                queue->device->ws->buffer_destroy(queue->compute_scratch_bo);
 }
 
+static void
+radv_device_init_gs_info(struct radv_device *device)
+{
+       switch (device->physical_device->rad_info.family) {
+       case CHIP_OLAND:
+       case CHIP_HAINAN:
+       case CHIP_KAVERI:
+       case CHIP_KABINI:
+       case CHIP_MULLINS:
+       case CHIP_ICELAND:
+       case CHIP_CARRIZO:
+       case CHIP_STONEY:
+               device->gs_table_depth = 16;
+               return;
+       case CHIP_TAHITI:
+       case CHIP_PITCAIRN:
+       case CHIP_VERDE:
+       case CHIP_BONAIRE:
+       case CHIP_HAWAII:
+       case CHIP_TONGA:
+       case CHIP_FIJI:
+       case CHIP_POLARIS10:
+       case CHIP_POLARIS11:
+               device->gs_table_depth = 32;
+               return;
+       default:
+               unreachable("unknown GPU");
+       }
+}
+
 VkResult radv_CreateDevice(
        VkPhysicalDevice                            physicalDevice,
        const VkDeviceCreateInfo*                   pCreateInfo,
@@ -849,6 +879,8 @@ VkResult radv_CreateDevice(
        device->scratch_waves = MAX2(32 * physical_device->rad_info.num_good_compute_units,
                                     max_threads_per_block / 64);
 
+       radv_device_init_gs_info(device);
+
        result = radv_device_init_meta(device);
        if (result != VK_SUCCESS)
                goto fail;
index 68c161e0d85f5bc816bd51706772c562baf055e3..60bc4b2f0f85d3b1d0935cca401c0d9be3a26778 100644 (file)
@@ -495,6 +495,9 @@ struct radv_device {
 
        bool llvm_supports_spill;
        uint32_t scratch_waves;
+
+       uint32_t gs_table_depth;
+
        /* MSAA sample locations.
         * The first index is the sample index.
         * The second index is the coordinate: X, Y. */