libs/vkd3d: Cache the number of valid bits in queue timestamp queries.

This commit is contained in:
Sven Hesse
2017-08-29 15:16:41 +02:00
parent 4bfa651561
commit 5b6bd40464
3 changed files with 23 additions and 0 deletions

View File

@@ -3698,6 +3698,7 @@ static HRESULT d3d12_command_queue_init(struct d3d12_command_queue *queue,
{
const struct vkd3d_vk_device_procs *vk_procs = &device->vk_procs;
unsigned int queue_family_index;
uint32_t timestamp_bits;
queue->ID3D12CommandQueue_iface.lpVtbl = &d3d12_command_queue_vtbl;
queue->refcount = 1;
@@ -3710,12 +3711,15 @@ static HRESULT d3d12_command_queue_init(struct d3d12_command_queue *queue,
{
case D3D12_COMMAND_LIST_TYPE_DIRECT:
queue_family_index = device->direct_queue_family_index;
timestamp_bits = device->direct_queue_timestamp_bits;
break;
case D3D12_COMMAND_LIST_TYPE_COPY:
queue_family_index = device->copy_queue_family_index;
timestamp_bits = device->copy_queue_timestamp_bits;
break;
case D3D12_COMMAND_LIST_TYPE_COMPUTE:
queue_family_index = device->compute_queue_family_index;
timestamp_bits = device->compute_queue_timestamp_bits;
break;
default:
FIXME("Unhandled command list type %#x.\n", desc->Type);
@@ -3730,6 +3734,7 @@ static HRESULT d3d12_command_queue_init(struct d3d12_command_queue *queue,
/* FIXME: Access to VkQueue must be externally synchronized. */
VK_CALL(vkGetDeviceQueue(device->vk_device, queue_family_index, 0, &queue->vk_queue));
queue->vk_queue_family_index = queue_family_index;
queue->vk_queue_timestamp_bits = timestamp_bits;
queue->device = device;
ID3D12Device_AddRef(&device->ID3D12Device_iface);