Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-winehq
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wine
wine-winehq
Commits
db03d2be
Commit
db03d2be
authored
Feb 03, 2024
by
Georg Lehmann
Committed by
Alexandre Julliard
Feb 06, 2024
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
winevulkan: Prepare for VK_KHR_calibrated_timestamps.
parent
16dafed0
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
44 additions
and
21 deletions
+44
-21
vulkan.c
dlls/winevulkan/vulkan.c
+44
-21
No files found.
dlls/winevulkan/vulkan.c
View file @
db03d2be
...
@@ -1325,17 +1325,19 @@ static inline uint64_t convert_timestamp(VkTimeDomainEXT host_domain, VkTimeDoma
...
@@ -1325,17 +1325,19 @@ static inline uint64_t convert_timestamp(VkTimeDomainEXT host_domain, VkTimeDoma
return
value
;
return
value
;
}
}
VkResult
wine_vkGetCalibratedTimestampsEXT
(
VkDevice
handle
,
uint32_t
timestamp_count
,
static
VkResult
wine_vk_get_timestamps
(
struct
wine_device
*
device
,
uint32_t
timestamp_count
,
const
VkCalibratedTimestampInfoEXT
*
timestamp_infos
,
const
VkCalibratedTimestampInfoEXT
*
timestamp_infos
,
uint64_t
*
timestamps
,
uint64_t
*
max_deviation
)
uint64_t
*
timestamps
,
uint64_t
*
max_deviation
,
VkResult
(
*
get_timestamps
)(
VkDevice
,
uint32_t
,
const
VkCalibratedTimestampInfoEXT
*
,
uint64_t
*
,
uint64_t
*
))
{
{
struct
wine_device
*
device
=
wine_device_from_handle
(
handle
);
VkCalibratedTimestampInfoEXT
*
host_timestamp_infos
;
VkCalibratedTimestampInfoEXT
*
host_timestamp_infos
;
unsigned
int
i
;
unsigned
int
i
;
VkResult
res
;
VkResult
res
;
TRACE
(
"%p, %u, %p, %p, %p
\n
"
,
device
,
timestamp_count
,
timestamp_infos
,
timestamps
,
max_deviation
);
if
(
!
(
host_timestamp_infos
=
malloc
(
sizeof
(
VkCalibratedTimestampInfoEXT
)
*
timestamp_count
)))
if
(
timestamp_count
==
0
)
return
VK_SUCCESS
;
if
(
!
(
host_timestamp_infos
=
calloc
(
sizeof
(
VkCalibratedTimestampInfoEXT
),
timestamp_count
)))
return
VK_ERROR_OUT_OF_HOST_MEMORY
;
return
VK_ERROR_OUT_OF_HOST_MEMORY
;
for
(
i
=
0
;
i
<
timestamp_count
;
i
++
)
for
(
i
=
0
;
i
<
timestamp_count
;
i
++
)
...
@@ -1345,24 +1347,23 @@ VkResult wine_vkGetCalibratedTimestampsEXT(VkDevice handle, uint32_t timestamp_c
...
@@ -1345,24 +1347,23 @@ VkResult wine_vkGetCalibratedTimestampsEXT(VkDevice handle, uint32_t timestamp_c
host_timestamp_infos
[
i
].
timeDomain
=
map_to_host_time_domain
(
timestamp_infos
[
i
].
timeDomain
);
host_timestamp_infos
[
i
].
timeDomain
=
map_to_host_time_domain
(
timestamp_infos
[
i
].
timeDomain
);
}
}
res
=
device
->
funcs
.
p_vkGetCalibratedTimestampsEXT
(
device
->
host_device
,
timestamp_count
,
host_timestamp_infos
,
res
=
get_timestamps
(
device
->
host_device
,
timestamp_count
,
host_timestamp_infos
,
timestamps
,
max_deviation
);
timestamps
,
max_deviation
);
if
(
res
==
VK_SUCCESS
)
if
(
res
!=
VK_SUCCESS
)
{
return
res
;
for
(
i
=
0
;
i
<
timestamp_count
;
i
++
)
timestamps
[
i
]
=
convert_timestamp
(
host_timestamp_infos
[
i
].
timeDomain
,
timestamp_infos
[
i
].
timeDomain
,
timestamps
[
i
]);
for
(
i
=
0
;
i
<
timestamp_count
;
i
++
)
}
timestamps
[
i
]
=
convert_timestamp
(
host_timestamp_infos
[
i
].
timeDomain
,
timestamp_infos
[
i
].
timeDomain
,
timestamps
[
i
]);
free
(
host_timestamp_infos
);
free
(
host_timestamp_infos
);
return
res
;
return
res
;
}
}
VkResult
wine_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT
(
VkPhysicalDevice
handle
,
static
VkResult
wine_vk_get_time_domains
(
struct
wine_phys_dev
*
phys_dev
,
uint32_t
*
time_domain_count
,
uint32_t
*
time_domain_count
,
VkTimeDomainEXT
*
time_domains
)
VkTimeDomainEXT
*
time_domains
,
VkResult
(
*
get_domains
)(
VkPhysicalDevice
,
uint32_t
*
,
VkTimeDomainEXT
*
))
{
{
struct
wine_phys_dev
*
phys_dev
=
wine_phys_dev_from_handle
(
handle
);
BOOL
supports_device
=
FALSE
,
supports_monotonic
=
FALSE
,
supports_monotonic_raw
=
FALSE
;
BOOL
supports_device
=
FALSE
,
supports_monotonic
=
FALSE
,
supports_monotonic_raw
=
FALSE
;
const
VkTimeDomainEXT
performance_counter_domain
=
get_performance_counter_time_domain
();
const
VkTimeDomainEXT
performance_counter_domain
=
get_performance_counter_time_domain
();
VkTimeDomainEXT
*
host_time_domains
;
VkTimeDomainEXT
*
host_time_domains
;
...
@@ -1373,16 +1374,14 @@ VkResult wine_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT(VkPhysicalDevice ha
...
@@ -1373,16 +1374,14 @@ VkResult wine_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT(VkPhysicalDevice ha
VkResult
res
;
VkResult
res
;
/* Find out the time domains supported on the host */
/* Find out the time domains supported on the host */
res
=
phys_dev
->
instance
->
funcs
.
p_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT
(
phys_dev
->
host_physical_device
,
res
=
get_domains
(
phys_dev
->
host_physical_device
,
&
host_time_domain_count
,
NULL
);
&
host_time_domain_count
,
NULL
);
if
(
res
!=
VK_SUCCESS
)
if
(
res
!=
VK_SUCCESS
)
return
res
;
return
res
;
if
(
!
(
host_time_domains
=
malloc
(
sizeof
(
VkTimeDomainEXT
)
*
host_time_domain_count
)))
if
(
!
(
host_time_domains
=
malloc
(
sizeof
(
VkTimeDomainEXT
)
*
host_time_domain_count
)))
return
VK_ERROR_OUT_OF_HOST_MEMORY
;
return
VK_ERROR_OUT_OF_HOST_MEMORY
;
res
=
phys_dev
->
instance
->
funcs
.
p_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT
(
phys_dev
->
host_physical_device
,
res
=
get_domains
(
phys_dev
->
host_physical_device
,
&
host_time_domain_count
,
host_time_domains
);
&
host_time_domain_count
,
host_time_domains
);
if
(
res
!=
VK_SUCCESS
)
if
(
res
!=
VK_SUCCESS
)
{
{
free
(
host_time_domains
);
free
(
host_time_domains
);
...
@@ -1432,6 +1431,30 @@ VkResult wine_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT(VkPhysicalDevice ha
...
@@ -1432,6 +1431,30 @@ VkResult wine_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT(VkPhysicalDevice ha
return
res
;
return
res
;
}
}
VkResult
wine_vkGetCalibratedTimestampsEXT
(
VkDevice
handle
,
uint32_t
timestamp_count
,
const
VkCalibratedTimestampInfoEXT
*
timestamp_infos
,
uint64_t
*
timestamps
,
uint64_t
*
max_deviation
)
{
struct
wine_device
*
device
=
wine_device_from_handle
(
handle
);
TRACE
(
"%p, %u, %p, %p, %p
\n
"
,
device
,
timestamp_count
,
timestamp_infos
,
timestamps
,
max_deviation
);
return
wine_vk_get_timestamps
(
device
,
timestamp_count
,
timestamp_infos
,
timestamps
,
max_deviation
,
device
->
funcs
.
p_vkGetCalibratedTimestampsEXT
);
}
VkResult
wine_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT
(
VkPhysicalDevice
handle
,
uint32_t
*
time_domain_count
,
VkTimeDomainEXT
*
time_domains
)
{
struct
wine_phys_dev
*
phys_dev
=
wine_phys_dev_from_handle
(
handle
);
TRACE
(
"%p, %p, %p
\n
"
,
phys_dev
,
time_domain_count
,
time_domains
);
return
wine_vk_get_time_domains
(
phys_dev
,
time_domain_count
,
time_domains
,
phys_dev
->
instance
->
funcs
.
p_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT
);
}
void
wine_vkGetPhysicalDeviceExternalSemaphoreProperties
(
VkPhysicalDevice
phys_dev
,
void
wine_vkGetPhysicalDeviceExternalSemaphoreProperties
(
VkPhysicalDevice
phys_dev
,
const
VkPhysicalDeviceExternalSemaphoreInfo
*
info
,
const
VkPhysicalDeviceExternalSemaphoreInfo
*
info
,
VkExternalSemaphoreProperties
*
properties
)
VkExternalSemaphoreProperties
*
properties
)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment