mirror of
git://source.winehq.org/git/wine.git
synced 2024-09-15 05:14:46 +00:00
winevulkan: Use generated thunks for vkGetImageSparseMemoryRequirements(2) conversion.
This commit is contained in:
parent
95d83f019d
commit
edbb9eced2
|
@ -791,6 +791,9 @@ class VkFunction(object):
|
|||
for p in self.params:
|
||||
if p.needs_conversion(conv, unwrap, Direction.INPUT):
|
||||
body += p.copy(Direction.INPUT, conv, unwrap, prefix=params_prefix)
|
||||
elif p.is_dynamic_array() and p.needs_conversion(conv, unwrap, Direction.OUTPUT):
|
||||
body += " {0}_host = ({2}{0} && {1}) ? conversion_context_alloc(&ctx, sizeof(*{0}_host) * {1}) : NULL;\n".format(
|
||||
p.name, p.get_dyn_array_len(params_prefix), params_prefix)
|
||||
|
||||
# Build list of parameters containing converted and non-converted parameters.
|
||||
# The param itself knows if conversion is needed and applies it when we set conv=True.
|
||||
|
@ -1573,9 +1576,9 @@ class VkParam(VkVariable):
|
|||
|
||||
def copy(self, direction, conv, unwrap, prefix=""):
|
||||
win_type = "win32" if conv else "win64"
|
||||
wrap_part = "" if unwrap or not self.needs_unwrapping() else "unwrapped_"
|
||||
if direction == Direction.INPUT:
|
||||
ctx_param = "&ctx, " if self.needs_alloc(conv, unwrap) else ""
|
||||
wrap_part = "" if unwrap or not self.needs_unwrapping() else "unwrapped_"
|
||||
if self.is_dynamic_array():
|
||||
return " {1}_host = convert_{2}_array_{4}_to_{6}host({5}{0}{1}, {3});\n".format(
|
||||
prefix, self.name, self.type, self.get_dyn_array_len(prefix), win_type, ctx_param, wrap_part)
|
||||
|
@ -1583,7 +1586,8 @@ class VkParam(VkVariable):
|
|||
return " convert_{0}_{3}_to_{5}host({4}{1}{2}, &{2}_host);\n".format(self.type, prefix, self.name, win_type, ctx_param, wrap_part)
|
||||
else:
|
||||
if self.is_dynamic_array():
|
||||
LOGGER.error("Unimplemented output conversion for: {0}".format(self.name))
|
||||
return " convert_{0}_array_{1}host_to_{2}({3}_host, {4}{3}, {5});\n".format(
|
||||
self.type, wrap_part, win_type, self.name, prefix, self.get_dyn_array_len(prefix))
|
||||
else:
|
||||
return " convert_{0}_host_to_{3}(&{2}_host, {1}{2});\n".format(self.type, prefix, self.name, win_type)
|
||||
|
||||
|
@ -1921,13 +1925,6 @@ class VkStruct(Sequence):
|
|||
if direction == Direction.INPUT and self.name in STRUCT_CHAIN_CONVERSIONS:
|
||||
return True
|
||||
|
||||
# VkSparseImageMemoryRequirements(2) is used by vkGetImageSparseMemoryRequirements(2).
|
||||
# This function is tricky to wrap, because how to wrap depends on whether
|
||||
# pSparseMemoryRequirements is NULL or not. Luckily for VkSparseImageMemoryRequirements(2)
|
||||
# the alignment works out in such a way that no conversion is needed between win32 and Linux.
|
||||
if self.name in ["VkSparseImageMemoryRequirements", "VkSparseImageMemoryRequirements2"]:
|
||||
return False
|
||||
|
||||
# pFixedRateFlags field is missing const, but it doesn't need output conversion
|
||||
if direction == Direction.OUTPUT and self.name == "VkImageCompressionControlEXT":
|
||||
return False
|
||||
|
@ -1978,10 +1975,6 @@ class VkStruct(Sequence):
|
|||
return False
|
||||
|
||||
def needs_host_type(self):
|
||||
# FIXME: Remove once we don't need need it
|
||||
if self.name in ["VkSparseImageMemoryRequirements", "VkSparseImageMemoryRequirements2"]:
|
||||
return False
|
||||
|
||||
for m in self.members:
|
||||
if self.name == m.type:
|
||||
continue
|
||||
|
|
|
@ -5925,6 +5925,70 @@ static inline void convert_VkDeviceFaultInfoEXT_host_to_win32(const VkDeviceFaul
|
|||
}
|
||||
#endif /* USE_STRUCT_CONVERSION */
|
||||
|
||||
#if defined(USE_STRUCT_CONVERSION)
|
||||
static inline void convert_VkSparseImageMemoryRequirements_host_to_win32(const VkSparseImageMemoryRequirements_host *in, VkSparseImageMemoryRequirements *out)
|
||||
{
|
||||
if (!in) return;
|
||||
|
||||
out->formatProperties = in->formatProperties;
|
||||
out->imageMipTailFirstLod = in->imageMipTailFirstLod;
|
||||
out->imageMipTailSize = in->imageMipTailSize;
|
||||
out->imageMipTailOffset = in->imageMipTailOffset;
|
||||
out->imageMipTailStride = in->imageMipTailStride;
|
||||
}
|
||||
#endif /* USE_STRUCT_CONVERSION */
|
||||
|
||||
#if defined(USE_STRUCT_CONVERSION)
|
||||
static inline void convert_VkSparseImageMemoryRequirements2_win32_to_host(const VkSparseImageMemoryRequirements2 *in, VkSparseImageMemoryRequirements2_host *out)
|
||||
{
|
||||
if (!in) return;
|
||||
|
||||
out->sType = in->sType;
|
||||
out->pNext = in->pNext;
|
||||
}
|
||||
#endif /* USE_STRUCT_CONVERSION */
|
||||
|
||||
#if defined(USE_STRUCT_CONVERSION)
|
||||
static inline void convert_VkSparseImageMemoryRequirements2_host_to_win32(const VkSparseImageMemoryRequirements2_host *in, VkSparseImageMemoryRequirements2 *out)
|
||||
{
|
||||
if (!in) return;
|
||||
|
||||
convert_VkSparseImageMemoryRequirements_host_to_win32(&in->memoryRequirements, &out->memoryRequirements);
|
||||
}
|
||||
#endif /* USE_STRUCT_CONVERSION */
|
||||
|
||||
#if defined(USE_STRUCT_CONVERSION)
|
||||
static inline VkSparseImageMemoryRequirements2_host *convert_VkSparseImageMemoryRequirements2_array_win32_to_host(struct conversion_context *ctx, const VkSparseImageMemoryRequirements2 *in, uint32_t count)
|
||||
{
|
||||
VkSparseImageMemoryRequirements2_host *out;
|
||||
unsigned int i;
|
||||
|
||||
if (!in || !count) return NULL;
|
||||
|
||||
out = conversion_context_alloc(ctx, count * sizeof(*out));
|
||||
for (i = 0; i < count; i++)
|
||||
{
|
||||
convert_VkSparseImageMemoryRequirements2_win32_to_host(&in[i], &out[i]);
|
||||
}
|
||||
|
||||
return out;
|
||||
}
|
||||
#endif /* USE_STRUCT_CONVERSION */
|
||||
|
||||
#if defined(USE_STRUCT_CONVERSION)
|
||||
static inline void convert_VkSparseImageMemoryRequirements2_array_host_to_win32(const VkSparseImageMemoryRequirements2_host *in, VkSparseImageMemoryRequirements2 *out, uint32_t count)
|
||||
{
|
||||
unsigned int i;
|
||||
|
||||
if (!in) return;
|
||||
|
||||
for (i = 0; i < count; i++)
|
||||
{
|
||||
convert_VkSparseImageMemoryRequirements2_host_to_win32(&in[i], &out[i]);
|
||||
}
|
||||
}
|
||||
#endif /* USE_STRUCT_CONVERSION */
|
||||
|
||||
#if defined(USE_STRUCT_CONVERSION)
|
||||
static inline void convert_VkDeviceMemoryOpaqueCaptureAddressInfo_win32_to_host(const VkDeviceMemoryOpaqueCaptureAddressInfo *in, VkDeviceMemoryOpaqueCaptureAddressInfo_host *out)
|
||||
{
|
||||
|
@ -5961,6 +6025,20 @@ static inline void convert_VkImageMemoryRequirementsInfo2_win32_to_host(const Vk
|
|||
}
|
||||
#endif /* USE_STRUCT_CONVERSION */
|
||||
|
||||
#if defined(USE_STRUCT_CONVERSION)
|
||||
static inline void convert_VkSparseImageMemoryRequirements_array_host_to_win32(const VkSparseImageMemoryRequirements_host *in, VkSparseImageMemoryRequirements *out, uint32_t count)
|
||||
{
|
||||
unsigned int i;
|
||||
|
||||
if (!in) return;
|
||||
|
||||
for (i = 0; i < count; i++)
|
||||
{
|
||||
convert_VkSparseImageMemoryRequirements_host_to_win32(&in[i], &out[i]);
|
||||
}
|
||||
}
|
||||
#endif /* USE_STRUCT_CONVERSION */
|
||||
|
||||
#if defined(USE_STRUCT_CONVERSION)
|
||||
static inline void convert_VkImageSparseMemoryRequirementsInfo2_win32_to_host(const VkImageSparseMemoryRequirementsInfo2 *in, VkImageSparseMemoryRequirementsInfo2_host *out)
|
||||
{
|
||||
|
@ -17186,10 +17264,16 @@ static NTSTATUS thunk64_vkGetDeviceImageSparseMemoryRequirements(void *args)
|
|||
static NTSTATUS thunk32_vkGetDeviceImageSparseMemoryRequirements(void *args)
|
||||
{
|
||||
struct vkGetDeviceImageSparseMemoryRequirements_params *params = args;
|
||||
VkSparseImageMemoryRequirements2_host *pSparseMemoryRequirements_host;
|
||||
struct conversion_context ctx;
|
||||
|
||||
TRACE("%p, %p, %p, %p\n", params->device, params->pInfo, params->pSparseMemoryRequirementCount, params->pSparseMemoryRequirements);
|
||||
|
||||
wine_device_from_handle(params->device)->funcs.p_vkGetDeviceImageSparseMemoryRequirements(wine_device_from_handle(params->device)->device, params->pInfo, params->pSparseMemoryRequirementCount, params->pSparseMemoryRequirements);
|
||||
init_conversion_context(&ctx);
|
||||
pSparseMemoryRequirements_host = convert_VkSparseImageMemoryRequirements2_array_win32_to_host(&ctx, params->pSparseMemoryRequirements, *params->pSparseMemoryRequirementCount);
|
||||
wine_device_from_handle(params->device)->funcs.p_vkGetDeviceImageSparseMemoryRequirements(wine_device_from_handle(params->device)->device, params->pInfo, params->pSparseMemoryRequirementCount, pSparseMemoryRequirements_host);
|
||||
convert_VkSparseImageMemoryRequirements2_array_host_to_win32(pSparseMemoryRequirements_host, params->pSparseMemoryRequirements, *params->pSparseMemoryRequirementCount);
|
||||
free_conversion_context(&ctx);
|
||||
return STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
|
@ -17212,10 +17296,16 @@ static NTSTATUS thunk64_vkGetDeviceImageSparseMemoryRequirementsKHR(void *args)
|
|||
static NTSTATUS thunk32_vkGetDeviceImageSparseMemoryRequirementsKHR(void *args)
|
||||
{
|
||||
struct vkGetDeviceImageSparseMemoryRequirementsKHR_params *params = args;
|
||||
VkSparseImageMemoryRequirements2_host *pSparseMemoryRequirements_host;
|
||||
struct conversion_context ctx;
|
||||
|
||||
TRACE("%p, %p, %p, %p\n", params->device, params->pInfo, params->pSparseMemoryRequirementCount, params->pSparseMemoryRequirements);
|
||||
|
||||
wine_device_from_handle(params->device)->funcs.p_vkGetDeviceImageSparseMemoryRequirementsKHR(wine_device_from_handle(params->device)->device, params->pInfo, params->pSparseMemoryRequirementCount, params->pSparseMemoryRequirements);
|
||||
init_conversion_context(&ctx);
|
||||
pSparseMemoryRequirements_host = convert_VkSparseImageMemoryRequirements2_array_win32_to_host(&ctx, params->pSparseMemoryRequirements, *params->pSparseMemoryRequirementCount);
|
||||
wine_device_from_handle(params->device)->funcs.p_vkGetDeviceImageSparseMemoryRequirementsKHR(wine_device_from_handle(params->device)->device, params->pInfo, params->pSparseMemoryRequirementCount, pSparseMemoryRequirements_host);
|
||||
convert_VkSparseImageMemoryRequirements2_array_host_to_win32(pSparseMemoryRequirements_host, params->pSparseMemoryRequirements, *params->pSparseMemoryRequirementCount);
|
||||
free_conversion_context(&ctx);
|
||||
return STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
|
@ -17654,10 +17744,16 @@ static NTSTATUS thunk64_vkGetImageSparseMemoryRequirements(void *args)
|
|||
static NTSTATUS thunk32_vkGetImageSparseMemoryRequirements(void *args)
|
||||
{
|
||||
struct vkGetImageSparseMemoryRequirements_params *params = args;
|
||||
VkSparseImageMemoryRequirements_host *pSparseMemoryRequirements_host;
|
||||
struct conversion_context ctx;
|
||||
|
||||
TRACE("%p, 0x%s, %p, %p\n", params->device, wine_dbgstr_longlong(params->image), params->pSparseMemoryRequirementCount, params->pSparseMemoryRequirements);
|
||||
|
||||
wine_device_from_handle(params->device)->funcs.p_vkGetImageSparseMemoryRequirements(wine_device_from_handle(params->device)->device, params->image, params->pSparseMemoryRequirementCount, params->pSparseMemoryRequirements);
|
||||
init_conversion_context(&ctx);
|
||||
pSparseMemoryRequirements_host = (params->pSparseMemoryRequirements && *params->pSparseMemoryRequirementCount) ? conversion_context_alloc(&ctx, sizeof(*pSparseMemoryRequirements_host) * *params->pSparseMemoryRequirementCount) : NULL;
|
||||
wine_device_from_handle(params->device)->funcs.p_vkGetImageSparseMemoryRequirements(wine_device_from_handle(params->device)->device, params->image, params->pSparseMemoryRequirementCount, pSparseMemoryRequirements_host);
|
||||
convert_VkSparseImageMemoryRequirements_array_host_to_win32(pSparseMemoryRequirements_host, params->pSparseMemoryRequirements, *params->pSparseMemoryRequirementCount);
|
||||
free_conversion_context(&ctx);
|
||||
return STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
|
@ -17681,11 +17777,17 @@ static NTSTATUS thunk32_vkGetImageSparseMemoryRequirements2(void *args)
|
|||
{
|
||||
struct vkGetImageSparseMemoryRequirements2_params *params = args;
|
||||
VkImageSparseMemoryRequirementsInfo2_host pInfo_host;
|
||||
VkSparseImageMemoryRequirements2_host *pSparseMemoryRequirements_host;
|
||||
struct conversion_context ctx;
|
||||
|
||||
TRACE("%p, %p, %p, %p\n", params->device, params->pInfo, params->pSparseMemoryRequirementCount, params->pSparseMemoryRequirements);
|
||||
|
||||
init_conversion_context(&ctx);
|
||||
convert_VkImageSparseMemoryRequirementsInfo2_win32_to_host(params->pInfo, &pInfo_host);
|
||||
wine_device_from_handle(params->device)->funcs.p_vkGetImageSparseMemoryRequirements2(wine_device_from_handle(params->device)->device, &pInfo_host, params->pSparseMemoryRequirementCount, params->pSparseMemoryRequirements);
|
||||
pSparseMemoryRequirements_host = convert_VkSparseImageMemoryRequirements2_array_win32_to_host(&ctx, params->pSparseMemoryRequirements, *params->pSparseMemoryRequirementCount);
|
||||
wine_device_from_handle(params->device)->funcs.p_vkGetImageSparseMemoryRequirements2(wine_device_from_handle(params->device)->device, &pInfo_host, params->pSparseMemoryRequirementCount, pSparseMemoryRequirements_host);
|
||||
convert_VkSparseImageMemoryRequirements2_array_host_to_win32(pSparseMemoryRequirements_host, params->pSparseMemoryRequirements, *params->pSparseMemoryRequirementCount);
|
||||
free_conversion_context(&ctx);
|
||||
return STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
|
@ -17709,11 +17811,17 @@ static NTSTATUS thunk32_vkGetImageSparseMemoryRequirements2KHR(void *args)
|
|||
{
|
||||
struct vkGetImageSparseMemoryRequirements2KHR_params *params = args;
|
||||
VkImageSparseMemoryRequirementsInfo2_host pInfo_host;
|
||||
VkSparseImageMemoryRequirements2_host *pSparseMemoryRequirements_host;
|
||||
struct conversion_context ctx;
|
||||
|
||||
TRACE("%p, %p, %p, %p\n", params->device, params->pInfo, params->pSparseMemoryRequirementCount, params->pSparseMemoryRequirements);
|
||||
|
||||
init_conversion_context(&ctx);
|
||||
convert_VkImageSparseMemoryRequirementsInfo2_win32_to_host(params->pInfo, &pInfo_host);
|
||||
wine_device_from_handle(params->device)->funcs.p_vkGetImageSparseMemoryRequirements2KHR(wine_device_from_handle(params->device)->device, &pInfo_host, params->pSparseMemoryRequirementCount, params->pSparseMemoryRequirements);
|
||||
pSparseMemoryRequirements_host = convert_VkSparseImageMemoryRequirements2_array_win32_to_host(&ctx, params->pSparseMemoryRequirements, *params->pSparseMemoryRequirementCount);
|
||||
wine_device_from_handle(params->device)->funcs.p_vkGetImageSparseMemoryRequirements2KHR(wine_device_from_handle(params->device)->device, &pInfo_host, params->pSparseMemoryRequirementCount, pSparseMemoryRequirements_host);
|
||||
convert_VkSparseImageMemoryRequirements2_array_host_to_win32(pSparseMemoryRequirements_host, params->pSparseMemoryRequirements, *params->pSparseMemoryRequirementCount);
|
||||
free_conversion_context(&ctx);
|
||||
return STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
|
|
|
@ -1310,6 +1310,31 @@ typedef struct VkDeviceFaultInfoEXT_host
|
|||
typedef VkDeviceFaultInfoEXT VkDeviceFaultInfoEXT_host;
|
||||
#endif
|
||||
|
||||
#if defined(USE_STRUCT_CONVERSION)
|
||||
typedef struct VkSparseImageMemoryRequirements_host
|
||||
{
|
||||
VkSparseImageFormatProperties formatProperties;
|
||||
uint32_t imageMipTailFirstLod;
|
||||
VkDeviceSize imageMipTailSize;
|
||||
VkDeviceSize imageMipTailOffset;
|
||||
VkDeviceSize imageMipTailStride;
|
||||
} VkSparseImageMemoryRequirements_host;
|
||||
#else
|
||||
typedef VkSparseImageMemoryRequirements VkSparseImageMemoryRequirements_host;
|
||||
#endif
|
||||
|
||||
#if defined(USE_STRUCT_CONVERSION)
|
||||
typedef struct VkSparseImageMemoryRequirements2_host
|
||||
{
|
||||
VkStructureType sType;
|
||||
void *pNext;
|
||||
VkSparseImageMemoryRequirements_host memoryRequirements;
|
||||
} VkSparseImageMemoryRequirements2_host;
|
||||
typedef VkSparseImageMemoryRequirements2 VkSparseImageMemoryRequirements2KHR;
|
||||
#else
|
||||
typedef VkSparseImageMemoryRequirements2 VkSparseImageMemoryRequirements2_host;
|
||||
#endif
|
||||
|
||||
#if defined(USE_STRUCT_CONVERSION)
|
||||
typedef struct VkDeviceMemoryOpaqueCaptureAddressInfo_host
|
||||
{
|
||||
|
@ -2267,8 +2292,8 @@ struct vulkan_device_funcs
|
|||
VkResult (*p_vkGetDeviceGroupSurfacePresentModesKHR)(VkDevice, VkSurfaceKHR, VkDeviceGroupPresentModeFlagsKHR *);
|
||||
void (*p_vkGetDeviceImageMemoryRequirements)(VkDevice, const VkDeviceImageMemoryRequirements *, VkMemoryRequirements2_host *);
|
||||
void (*p_vkGetDeviceImageMemoryRequirementsKHR)(VkDevice, const VkDeviceImageMemoryRequirements *, VkMemoryRequirements2_host *);
|
||||
void (*p_vkGetDeviceImageSparseMemoryRequirements)(VkDevice, const VkDeviceImageMemoryRequirements *, uint32_t *, VkSparseImageMemoryRequirements2 *);
|
||||
void (*p_vkGetDeviceImageSparseMemoryRequirementsKHR)(VkDevice, const VkDeviceImageMemoryRequirements *, uint32_t *, VkSparseImageMemoryRequirements2 *);
|
||||
void (*p_vkGetDeviceImageSparseMemoryRequirements)(VkDevice, const VkDeviceImageMemoryRequirements *, uint32_t *, VkSparseImageMemoryRequirements2_host *);
|
||||
void (*p_vkGetDeviceImageSparseMemoryRequirementsKHR)(VkDevice, const VkDeviceImageMemoryRequirements *, uint32_t *, VkSparseImageMemoryRequirements2_host *);
|
||||
void (*p_vkGetDeviceMemoryCommitment)(VkDevice, VkDeviceMemory, VkDeviceSize *);
|
||||
uint64_t (*p_vkGetDeviceMemoryOpaqueCaptureAddress)(VkDevice, const VkDeviceMemoryOpaqueCaptureAddressInfo_host *);
|
||||
uint64_t (*p_vkGetDeviceMemoryOpaqueCaptureAddressKHR)(VkDevice, const VkDeviceMemoryOpaqueCaptureAddressInfo_host *);
|
||||
|
@ -2284,9 +2309,9 @@ struct vulkan_device_funcs
|
|||
void (*p_vkGetImageMemoryRequirements)(VkDevice, VkImage, VkMemoryRequirements_host *);
|
||||
void (*p_vkGetImageMemoryRequirements2)(VkDevice, const VkImageMemoryRequirementsInfo2_host *, VkMemoryRequirements2_host *);
|
||||
void (*p_vkGetImageMemoryRequirements2KHR)(VkDevice, const VkImageMemoryRequirementsInfo2_host *, VkMemoryRequirements2_host *);
|
||||
void (*p_vkGetImageSparseMemoryRequirements)(VkDevice, VkImage, uint32_t *, VkSparseImageMemoryRequirements *);
|
||||
void (*p_vkGetImageSparseMemoryRequirements2)(VkDevice, const VkImageSparseMemoryRequirementsInfo2_host *, uint32_t *, VkSparseImageMemoryRequirements2 *);
|
||||
void (*p_vkGetImageSparseMemoryRequirements2KHR)(VkDevice, const VkImageSparseMemoryRequirementsInfo2_host *, uint32_t *, VkSparseImageMemoryRequirements2 *);
|
||||
void (*p_vkGetImageSparseMemoryRequirements)(VkDevice, VkImage, uint32_t *, VkSparseImageMemoryRequirements_host *);
|
||||
void (*p_vkGetImageSparseMemoryRequirements2)(VkDevice, const VkImageSparseMemoryRequirementsInfo2_host *, uint32_t *, VkSparseImageMemoryRequirements2_host *);
|
||||
void (*p_vkGetImageSparseMemoryRequirements2KHR)(VkDevice, const VkImageSparseMemoryRequirementsInfo2_host *, uint32_t *, VkSparseImageMemoryRequirements2_host *);
|
||||
void (*p_vkGetImageSubresourceLayout)(VkDevice, VkImage, const VkImageSubresource *, VkSubresourceLayout_host *);
|
||||
void (*p_vkGetImageSubresourceLayout2EXT)(VkDevice, VkImage, const VkImageSubresource2EXT *, VkSubresourceLayout2EXT_host *);
|
||||
VkResult (*p_vkGetImageViewAddressNVX)(VkDevice, VkImageView, VkImageViewAddressPropertiesNVX_host *);
|
||||
|
|
Loading…
Reference in a new issue