From 8e2fb2e7109b68277041a0e0fbebe3e7614b91fb Mon Sep 17 00:00:00 2001 From: nihuini Date: Wed, 22 May 2019 11:25:06 +0800 Subject: [PATCH] expose timestamp_period and timestamp_valid_bits --- src/gpu.cpp | 21 +++++++++++++-------- src/gpu.h | 4 ++++ 2 files changed, 17 insertions(+), 8 deletions(-) diff --git a/src/gpu.cpp b/src/gpu.cpp index 58dcecb59..4394e089f 100644 --- a/src/gpu.cpp +++ b/src/gpu.cpp @@ -530,6 +530,8 @@ int create_gpu_instance() gpu_info.memory_map_alignment = physicalDeviceProperties.limits.minMemoryMapAlignment; gpu_info.buffer_offset_alignment = physicalDeviceProperties.limits.minStorageBufferOffsetAlignment; + gpu_info.timestamp_period = physicalDeviceProperties.limits.timestampPeriod; + // fprintf(stderr, "[%u] max_shared_memory_size = %u\n", i, gpu_info.max_shared_memory_size); // fprintf(stderr, "[%u] max_workgroup_count = %u %u %u\n", i, gpu_info.max_workgroup_count[0], gpu_info.max_workgroup_count[1], gpu_info.max_workgroup_count[2]); // fprintf(stderr, "[%u] max_workgroup_invocations = %u\n", i, gpu_info.max_workgroup_invocations); @@ -550,6 +552,9 @@ int create_gpu_instance() gpu_info.compute_queue_count = queueFamilyProperties[gpu_info.compute_queue_family_index].queueCount; gpu_info.transfer_queue_count = queueFamilyProperties[gpu_info.transfer_queue_family_index].queueCount; + // compute queue + gpu_info.timestamp_valid_bits = queueFamilyProperties[gpu_info.compute_queue_family_index].timestampValidBits; + // find memory type index VkPhysicalDeviceMemoryProperties physicalDeviceMemoryProperties; vkGetPhysicalDeviceMemoryProperties(physicalDevice, &physicalDeviceMemoryProperties); @@ -683,14 +688,14 @@ int create_gpu_instance() vkGetPhysicalDeviceFeatures2KHR(physicalDevice, &queryFeatures); -// if (gpu_info.support_VK_KHR_8bit_storage) -// { -// gpu_info.support_int8_storage = query8BitStorageFeatures.storageBuffer8BitAccess && query8BitStorageFeatures.uniformAndStorageBuffer8BitAccess; -// } -// if (gpu_info.support_VK_KHR_16bit_storage) -// { -// gpu_info.support_fp16_storage = query16BitStorageFeatures.storageBuffer16BitAccess && query16BitStorageFeatures.uniformAndStorageBuffer16BitAccess; -// } + if (gpu_info.support_VK_KHR_8bit_storage) + { + gpu_info.support_int8_storage = query8BitStorageFeatures.storageBuffer8BitAccess && query8BitStorageFeatures.uniformAndStorageBuffer8BitAccess; + } + if (gpu_info.support_VK_KHR_16bit_storage) + { + gpu_info.support_fp16_storage = query16BitStorageFeatures.storageBuffer16BitAccess && query16BitStorageFeatures.uniformAndStorageBuffer16BitAccess; + } // if (gpu_info.support_VK_KHR_shader_float16_int8) // { // gpu_info.support_fp16_arithmetic = queryFloat16Int8Features.shaderFloat16; diff --git a/src/gpu.h b/src/gpu.h index 3969d5507..4d9bb6f7a 100644 --- a/src/gpu.h +++ b/src/gpu.h @@ -71,6 +71,7 @@ public: uint32_t max_workgroup_size[3]; size_t memory_map_alignment; size_t buffer_offset_alignment; + float timestamp_period; // runtime uint32_t compute_queue_family_index; @@ -79,6 +80,9 @@ public: uint32_t compute_queue_count; uint32_t transfer_queue_count; + // compute queue only + uint32_t timestamp_valid_bits; + uint32_t unified_memory_index; uint32_t device_local_memory_index; uint32_t host_visible_memory_index;