Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/mesa
Path: blob/21.2-virgl/src/broadcom/vulkan/v3dv_wsi_display.c
4560 views
1
/*
2
* Copyright © 2020 Raspberry Pi
3
* based on KHR_display extension code:
4
* Copyright © 2017 Keith Packard
5
*
6
* Permission to use, copy, modify, distribute, and sell this software and its
7
* documentation for any purpose is hereby granted without fee, provided that
8
* the above copyright notice appear in all copies and that both that copyright
9
* notice and this permission notice appear in supporting documentation, and
10
* that the name of the copyright holders not be used in advertising or
11
* publicity pertaining to distribution of the software without specific,
12
* written prior permission. The copyright holders make no representations
13
* about the suitability of this software for any purpose. It is provided "as
14
* is" without express or implied warranty.
15
*
16
* THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
17
* INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
18
* EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY SPECIAL, INDIRECT OR
19
* CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
20
* DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
21
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
22
* OF THIS SOFTWARE.
23
*/
24
#include "v3dv_private.h"
25
#include "wsi_common_display.h"
26
27
VKAPI_ATTR VkResult VKAPI_CALL
28
v3dv_GetPhysicalDeviceDisplayPropertiesKHR(VkPhysicalDevice physical_device,
29
uint32_t *property_count,
30
VkDisplayPropertiesKHR *properties)
31
{
32
V3DV_FROM_HANDLE(v3dv_physical_device, pdevice, physical_device);
33
34
return wsi_display_get_physical_device_display_properties(
35
physical_device,
36
&pdevice->wsi_device,
37
property_count,
38
properties);
39
}
40
41
VkResult
42
v3dv_GetPhysicalDeviceDisplayProperties2KHR(
43
VkPhysicalDevice physical_device,
44
uint32_t *pPropertyCount,
45
VkDisplayProperties2KHR *pProperties)
46
{
47
V3DV_FROM_HANDLE(v3dv_physical_device, pdevice, physical_device);
48
49
return wsi_display_get_physical_device_display_properties2(
50
physical_device,
51
&pdevice->wsi_device,
52
pPropertyCount,
53
pProperties);
54
}
55
56
VKAPI_ATTR VkResult VKAPI_CALL
57
v3dv_GetPhysicalDeviceDisplayPlanePropertiesKHR(
58
VkPhysicalDevice physical_device,
59
uint32_t *property_count,
60
VkDisplayPlanePropertiesKHR *properties)
61
{
62
V3DV_FROM_HANDLE(v3dv_physical_device, pdevice, physical_device);
63
64
return wsi_display_get_physical_device_display_plane_properties(
65
physical_device,
66
&pdevice->wsi_device,
67
property_count,
68
properties);
69
}
70
71
VkResult
72
v3dv_GetPhysicalDeviceDisplayPlaneProperties2KHR(
73
VkPhysicalDevice physical_device,
74
uint32_t *pPropertyCount,
75
VkDisplayPlaneProperties2KHR *pProperties)
76
{
77
V3DV_FROM_HANDLE(v3dv_physical_device, pdevice, physical_device);
78
79
return wsi_display_get_physical_device_display_plane_properties2(
80
physical_device,
81
&pdevice->wsi_device,
82
pPropertyCount,
83
pProperties);
84
}
85
86
VKAPI_ATTR VkResult VKAPI_CALL
87
v3dv_GetDisplayPlaneSupportedDisplaysKHR(VkPhysicalDevice physical_device,
88
uint32_t plane_index,
89
uint32_t *display_count,
90
VkDisplayKHR *displays)
91
{
92
V3DV_FROM_HANDLE(v3dv_physical_device, pdevice, physical_device);
93
94
return wsi_display_get_display_plane_supported_displays(
95
physical_device,
96
&pdevice->wsi_device,
97
plane_index,
98
display_count,
99
displays);
100
}
101
102
VKAPI_ATTR VkResult VKAPI_CALL
103
v3dv_GetDisplayModePropertiesKHR(VkPhysicalDevice physical_device,
104
VkDisplayKHR display,
105
uint32_t *property_count,
106
VkDisplayModePropertiesKHR *properties)
107
{
108
V3DV_FROM_HANDLE(v3dv_physical_device, pdevice, physical_device);
109
110
return wsi_display_get_display_mode_properties(physical_device,
111
&pdevice->wsi_device,
112
display,
113
property_count,
114
properties);
115
}
116
117
VkResult
118
v3dv_GetDisplayModeProperties2KHR(VkPhysicalDevice physical_device,
119
VkDisplayKHR display,
120
uint32_t *pPropertyCount,
121
VkDisplayModeProperties2KHR *pProperties)
122
{
123
V3DV_FROM_HANDLE(v3dv_physical_device, pdevice, physical_device);
124
125
return wsi_display_get_display_mode_properties2(physical_device,
126
&pdevice->wsi_device,
127
display,
128
pPropertyCount,
129
pProperties);
130
}
131
132
VKAPI_ATTR VkResult VKAPI_CALL
133
v3dv_CreateDisplayModeKHR(VkPhysicalDevice physical_device,
134
VkDisplayKHR display,
135
const VkDisplayModeCreateInfoKHR *create_info,
136
const VkAllocationCallbacks *allocator,
137
VkDisplayModeKHR *mode)
138
{
139
V3DV_FROM_HANDLE(v3dv_physical_device, pdevice, physical_device);
140
141
return wsi_display_create_display_mode(physical_device,
142
&pdevice->wsi_device,
143
display,
144
create_info,
145
allocator,
146
mode);
147
}
148
149
VKAPI_ATTR VkResult VKAPI_CALL
150
v3dv_GetDisplayPlaneCapabilitiesKHR(VkPhysicalDevice physical_device,
151
VkDisplayModeKHR mode_khr,
152
uint32_t plane_index,
153
VkDisplayPlaneCapabilitiesKHR *capabilities)
154
{
155
V3DV_FROM_HANDLE(v3dv_physical_device, pdevice, physical_device);
156
157
return wsi_get_display_plane_capabilities(physical_device,
158
&pdevice->wsi_device,
159
mode_khr,
160
plane_index,
161
capabilities);
162
}
163
164
VkResult
165
v3dv_GetDisplayPlaneCapabilities2KHR(
166
VkPhysicalDevice physical_device,
167
const VkDisplayPlaneInfo2KHR *pDisplayPlaneInfo,
168
VkDisplayPlaneCapabilities2KHR *pCapabilities)
169
{
170
V3DV_FROM_HANDLE(v3dv_physical_device, pdevice, physical_device);
171
172
return wsi_get_display_plane_capabilities2(physical_device,
173
&pdevice->wsi_device,
174
pDisplayPlaneInfo,
175
pCapabilities);
176
}
177
178
VKAPI_ATTR VkResult VKAPI_CALL
179
v3dv_CreateDisplayPlaneSurfaceKHR(
180
VkInstance _instance,
181
const VkDisplaySurfaceCreateInfoKHR *create_info,
182
const VkAllocationCallbacks *allocator,
183
VkSurfaceKHR *surface)
184
{
185
V3DV_FROM_HANDLE(v3dv_instance, instance, _instance);
186
const VkAllocationCallbacks *alloc;
187
188
if (allocator)
189
alloc = allocator;
190
else
191
alloc = &instance->vk.alloc;
192
193
return wsi_create_display_surface(_instance, alloc,
194
create_info, surface);
195
}
196
197