Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/mesa
Path: blob/21.2-virgl/src/freedreno/vulkan/tu_legacy.c
4565 views
1
/*
2
* Copyright 2020 Valve Corporation
3
* SPDX-License-Identifier: MIT
4
*
5
* Authors:
6
* Jonathan Marek <[email protected]>
7
*/
8
9
#include <vulkan/vulkan.h>
10
#include <vulkan/vk_android_native_buffer.h> /* android tu_entrypoints.h depends on this */
11
#include <assert.h>
12
13
#include "tu_entrypoints.h"
14
#include "vk_util.h"
15
16
VKAPI_ATTR void VKAPI_CALL
17
tu_GetPhysicalDeviceQueueFamilyProperties(VkPhysicalDevice pdev,
18
uint32_t *count,
19
VkQueueFamilyProperties *props)
20
{
21
if (!props)
22
return tu_GetPhysicalDeviceQueueFamilyProperties2(pdev, count, NULL);
23
24
VkQueueFamilyProperties2 props2[*count];
25
for (uint32_t i = 0; i < *count; i++) {
26
props2[i].sType = VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2;
27
props2[i].pNext = NULL;
28
}
29
tu_GetPhysicalDeviceQueueFamilyProperties2(pdev, count, props2);
30
for (uint32_t i = 0; i < *count; i++)
31
props[i] = props2[i].queueFamilyProperties;
32
}
33
34
VKAPI_ATTR void VKAPI_CALL
35
tu_GetPhysicalDeviceSparseImageFormatProperties(VkPhysicalDevice pdev,
36
VkFormat format,
37
VkImageType type,
38
VkSampleCountFlagBits samples,
39
VkImageUsageFlags usage,
40
VkImageTiling tiling,
41
uint32_t *count,
42
VkSparseImageFormatProperties *props)
43
{
44
const VkPhysicalDeviceSparseImageFormatInfo2 info = {
45
.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2,
46
.format = format,
47
.type = type,
48
.samples = samples,
49
.usage = usage,
50
.tiling = tiling,
51
};
52
53
if (!props)
54
return tu_GetPhysicalDeviceSparseImageFormatProperties2(pdev, &info, count, NULL);
55
56
VkSparseImageFormatProperties2 props2[*count];
57
for (uint32_t i = 0; i < *count; i++) {
58
props2[i].sType = VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2;
59
props2[i].pNext = NULL;
60
}
61
tu_GetPhysicalDeviceSparseImageFormatProperties2(pdev, &info, count, props2);
62
for (uint32_t i = 0; i < *count; i++)
63
props[i] = props2[i].properties;
64
}
65
66
VKAPI_ATTR void VKAPI_CALL
67
tu_GetImageSparseMemoryRequirements(VkDevice device,
68
VkImage image,
69
uint32_t *count,
70
VkSparseImageMemoryRequirements *reqs)
71
{
72
const VkImageSparseMemoryRequirementsInfo2 info = {
73
.sType = VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2,
74
.image = image
75
};
76
77
if (!reqs)
78
return tu_GetImageSparseMemoryRequirements2(device, &info, count, NULL);
79
80
VkSparseImageMemoryRequirements2 reqs2[*count];
81
for (uint32_t i = 0; i < *count; i++) {
82
reqs2[i].sType = VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2;
83
reqs2[i].pNext = NULL;
84
}
85
tu_GetImageSparseMemoryRequirements2(device, &info, count, reqs2);
86
for (uint32_t i = 0; i < *count; i++)
87
reqs[i] = reqs2[i].memoryRequirements;
88
}
89
90