mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-06 20:18:12 +02:00
vulkan: make VK_TIME_DOMAIN_CLOCK_MONOTONIC_RAW_EXT conditional
Only advertise VK_TIME_DOMAIN_CLOCK_MONOTONIC_RAW_EXT if CLOCK_MONOTONIC_RAW is defined. Fixes the build on OpenBSD which has CLOCK_MONOTONIC but not CLOCK_MONOTONIC_RAW. Fixes:67a2c1493c("vulkan: Add VK_EXT_calibrated_timestamps extension (radv and anv) [v5]") Signed-off-by: Jonathan Gray <jsg@jsg.id.au> Reviewed-by: Jason Ekstrand <jason@jlekstrand.net> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6517> (cherry picked from commit4500e6e460)
This commit is contained in:
parent
25dae81b3a
commit
321f645126
3 changed files with 29 additions and 1 deletions
|
|
@ -85,7 +85,7 @@
|
|||
"description": "vulkan: make VK_TIME_DOMAIN_CLOCK_MONOTONIC_RAW_EXT conditional",
|
||||
"nominated": true,
|
||||
"nomination_type": 1,
|
||||
"resolution": 0,
|
||||
"resolution": 1,
|
||||
"master_sha": null,
|
||||
"because_sha": "67a2c1493c068281936fecba9fa6784becf08f8e"
|
||||
},
|
||||
|
|
|
|||
|
|
@ -7700,7 +7700,9 @@ radv_GetDeviceGroupPeerMemoryFeatures(
|
|||
static const VkTimeDomainEXT radv_time_domains[] = {
|
||||
VK_TIME_DOMAIN_DEVICE_EXT,
|
||||
VK_TIME_DOMAIN_CLOCK_MONOTONIC_EXT,
|
||||
#ifdef CLOCK_MONOTONIC_RAW
|
||||
VK_TIME_DOMAIN_CLOCK_MONOTONIC_RAW_EXT,
|
||||
#endif
|
||||
};
|
||||
|
||||
VkResult radv_GetPhysicalDeviceCalibrateableTimeDomainsEXT(
|
||||
|
|
@ -7727,8 +7729,10 @@ radv_clock_gettime(clockid_t clock_id)
|
|||
int ret;
|
||||
|
||||
ret = clock_gettime(clock_id, ¤t);
|
||||
#ifdef CLOCK_MONOTONIC_RAW
|
||||
if (ret < 0 && clock_id == CLOCK_MONOTONIC_RAW)
|
||||
ret = clock_gettime(CLOCK_MONOTONIC, ¤t);
|
||||
#endif
|
||||
if (ret < 0)
|
||||
return 0;
|
||||
|
||||
|
|
@ -7748,7 +7752,11 @@ VkResult radv_GetCalibratedTimestampsEXT(
|
|||
uint64_t begin, end;
|
||||
uint64_t max_clock_period = 0;
|
||||
|
||||
#ifdef CLOCK_MONOTONIC_RAW
|
||||
begin = radv_clock_gettime(CLOCK_MONOTONIC_RAW);
|
||||
#else
|
||||
begin = radv_clock_gettime(CLOCK_MONOTONIC);
|
||||
#endif
|
||||
|
||||
for (d = 0; d < timestampCount; d++) {
|
||||
switch (pTimestampInfos[d].timeDomain) {
|
||||
|
|
@ -7763,16 +7771,22 @@ VkResult radv_GetCalibratedTimestampsEXT(
|
|||
max_clock_period = MAX2(max_clock_period, 1);
|
||||
break;
|
||||
|
||||
#ifdef CLOCK_MONOTONIC_RAW
|
||||
case VK_TIME_DOMAIN_CLOCK_MONOTONIC_RAW_EXT:
|
||||
pTimestamps[d] = begin;
|
||||
break;
|
||||
#endif
|
||||
default:
|
||||
pTimestamps[d] = 0;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef CLOCK_MONOTONIC_RAW
|
||||
end = radv_clock_gettime(CLOCK_MONOTONIC_RAW);
|
||||
#else
|
||||
end = radv_clock_gettime(CLOCK_MONOTONIC);
|
||||
#endif
|
||||
|
||||
/*
|
||||
* The maximum deviation is the sum of the interval over which we
|
||||
|
|
|
|||
|
|
@ -4337,7 +4337,9 @@ void anv_DestroyFramebuffer(
|
|||
static const VkTimeDomainEXT anv_time_domains[] = {
|
||||
VK_TIME_DOMAIN_DEVICE_EXT,
|
||||
VK_TIME_DOMAIN_CLOCK_MONOTONIC_EXT,
|
||||
#ifdef CLOCK_MONOTONIC_RAW
|
||||
VK_TIME_DOMAIN_CLOCK_MONOTONIC_RAW_EXT,
|
||||
#endif
|
||||
};
|
||||
|
||||
VkResult anv_GetPhysicalDeviceCalibrateableTimeDomainsEXT(
|
||||
|
|
@ -4364,8 +4366,10 @@ anv_clock_gettime(clockid_t clock_id)
|
|||
int ret;
|
||||
|
||||
ret = clock_gettime(clock_id, ¤t);
|
||||
#ifdef CLOCK_MONOTONIC_RAW
|
||||
if (ret < 0 && clock_id == CLOCK_MONOTONIC_RAW)
|
||||
ret = clock_gettime(CLOCK_MONOTONIC, ¤t);
|
||||
#endif
|
||||
if (ret < 0)
|
||||
return 0;
|
||||
|
||||
|
|
@ -4388,7 +4392,11 @@ VkResult anv_GetCalibratedTimestampsEXT(
|
|||
uint64_t begin, end;
|
||||
uint64_t max_clock_period = 0;
|
||||
|
||||
#ifdef CLOCK_MONOTONIC_RAW
|
||||
begin = anv_clock_gettime(CLOCK_MONOTONIC_RAW);
|
||||
#else
|
||||
begin = anv_clock_gettime(CLOCK_MONOTONIC);
|
||||
#endif
|
||||
|
||||
for (d = 0; d < timestampCount; d++) {
|
||||
switch (pTimestampInfos[d].timeDomain) {
|
||||
|
|
@ -4408,16 +4416,22 @@ VkResult anv_GetCalibratedTimestampsEXT(
|
|||
max_clock_period = MAX2(max_clock_period, 1);
|
||||
break;
|
||||
|
||||
#ifdef CLOCK_MONOTONIC_RAW
|
||||
case VK_TIME_DOMAIN_CLOCK_MONOTONIC_RAW_EXT:
|
||||
pTimestamps[d] = begin;
|
||||
break;
|
||||
#endif
|
||||
default:
|
||||
pTimestamps[d] = 0;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef CLOCK_MONOTONIC_RAW
|
||||
end = anv_clock_gettime(CLOCK_MONOTONIC_RAW);
|
||||
#else
|
||||
end = anv_clock_gettime(CLOCK_MONOTONIC);
|
||||
#endif
|
||||
|
||||
/*
|
||||
* The maximum deviation is the sum of the interval over which we
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue