diff options
author | Bas Nieuwenhuizen <[email protected]> | 2016-12-17 21:53:38 +0100 |
---|---|---|
committer | Bas Nieuwenhuizen <[email protected]> | 2016-12-18 20:52:47 +0100 |
commit | f2523ebf52a4ed1e9a90ce527398d13ee493cb22 (patch) | |
tree | 8c95cc374a260f05bb45e27dc3ad596a975e11da /src/amd/vulkan/radv_device.c | |
parent | accc5fc026ec45171c458334bdee16747fbe7824 (diff) |
radv: Create an empty CS per ring type.
Signed-off-by: Bas Nieuwenhuizen <[email protected]>
Reviewed-by: Dave Airlie <[email protected]>
Diffstat (limited to 'src/amd/vulkan/radv_device.c')
-rw-r--r-- | src/amd/vulkan/radv_device.c | 25 |
1 files changed, 19 insertions, 6 deletions
diff --git a/src/amd/vulkan/radv_device.c b/src/amd/vulkan/radv_device.c index 3aac247f8ba..cfedff434b0 100644 --- a/src/amd/vulkan/radv_device.c +++ b/src/amd/vulkan/radv_device.c @@ -710,11 +710,23 @@ VkResult radv_CreateDevice( radv_finishme("DCC fast clears have not been tested\n"); radv_device_init_msaa(device); - device->empty_cs = device->ws->cs_create(device->ws, RING_GFX); - radeon_emit(device->empty_cs, PKT3(PKT3_CONTEXT_CONTROL, 1, 0)); - radeon_emit(device->empty_cs, CONTEXT_CONTROL_LOAD_ENABLE(1)); - radeon_emit(device->empty_cs, CONTEXT_CONTROL_SHADOW_ENABLE(1)); - device->ws->cs_finalize(device->empty_cs); + + for (int family = 0; family < RADV_MAX_QUEUE_FAMILIES; ++family) { + device->empty_cs[family] = device->ws->cs_create(device->ws, family); + switch (family) { + case RADV_QUEUE_GENERAL: + radeon_emit(device->empty_cs[family], PKT3(PKT3_CONTEXT_CONTROL, 1, 0)); + radeon_emit(device->empty_cs[family], CONTEXT_CONTROL_LOAD_ENABLE(1)); + radeon_emit(device->empty_cs[family], CONTEXT_CONTROL_SHADOW_ENABLE(1)); + break; + case RADV_QUEUE_COMPUTE: + radeon_emit(device->empty_cs[family], PKT3(PKT3_NOP, 0, 0)); + radeon_emit(device->empty_cs[family], 0); + break; + } + device->ws->cs_finalize(device->empty_cs[family]); + } + *pDevice = radv_device_to_handle(device); return VK_SUCCESS; @@ -869,7 +881,8 @@ VkResult radv_QueueSubmit( if (fence) { if (!submitCount) - ret = queue->device->ws->cs_submit(ctx, queue->queue_idx, &queue->device->empty_cs, + ret = queue->device->ws->cs_submit(ctx, queue->queue_idx, + &queue->device->empty_cs[queue->queue_family_index], 1, NULL, 0, NULL, 0, false, base_fence); fence->submitted = true; |