Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/mesa
Path: blob/21.2-virgl/src/panfrost/vulkan/panvk_wsi_display.c
4560 views
1
/*
2
* Copyright © 2021 Collabora Ltd.
3
*
4
* Derived from v3dv driver:
5
* Copyright © 2020 Raspberry Pi
6
* Copyright © 2017 Keith Packard
7
*
8
* Permission to use, copy, modify, distribute, and sell this software and its
9
* documentation for any purpose is hereby granted without fee, provided that
10
* the above copyright notice appear in all copies and that both that copyright
11
* notice and this permission notice appear in supporting documentation, and
12
* that the name of the copyright holders not be used in advertising or
13
* publicity pertaining to distribution of the software without specific,
14
* written prior permission. The copyright holders make no representations
15
* about the suitability of this software for any purpose. It is provided "as
16
* is" without express or implied warranty.
17
*
18
* THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
19
* INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
20
* EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY SPECIAL, INDIRECT OR
21
* CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
22
* DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
23
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
24
* OF THIS SOFTWARE.
25
*/
26
#include "panvk_private.h"
27
#include "wsi_common_display.h"
28
29
VkResult
30
panvk_GetPhysicalDeviceDisplayPropertiesKHR(VkPhysicalDevice physical_device,
31
uint32_t *property_count,
32
VkDisplayPropertiesKHR *properties)
33
{
34
VK_FROM_HANDLE(panvk_physical_device, pdevice, physical_device);
35
36
return wsi_display_get_physical_device_display_properties(
37
physical_device,
38
&pdevice->wsi_device,
39
property_count,
40
properties);
41
}
42
43
VkResult
44
panvk_GetPhysicalDeviceDisplayPlanePropertiesKHR(VkPhysicalDevice physical_device,
45
uint32_t *property_count,
46
VkDisplayPlanePropertiesKHR *properties)
47
{
48
VK_FROM_HANDLE(panvk_physical_device, pdevice, physical_device);
49
50
return wsi_display_get_physical_device_display_plane_properties(
51
physical_device,
52
&pdevice->wsi_device,
53
property_count,
54
properties);
55
}
56
57
VkResult
58
panvk_GetDisplayPlaneSupportedDisplaysKHR(VkPhysicalDevice physical_device,
59
uint32_t plane_index,
60
uint32_t *display_count,
61
VkDisplayKHR *displays)
62
{
63
VK_FROM_HANDLE(panvk_physical_device, pdevice, physical_device);
64
65
return wsi_display_get_display_plane_supported_displays(
66
physical_device,
67
&pdevice->wsi_device,
68
plane_index,
69
display_count,
70
displays);
71
}
72
73
VkResult
74
panvk_GetDisplayModePropertiesKHR(VkPhysicalDevice physical_device,
75
VkDisplayKHR display,
76
uint32_t *property_count,
77
VkDisplayModePropertiesKHR *properties)
78
{
79
VK_FROM_HANDLE(panvk_physical_device, pdevice, physical_device);
80
81
return wsi_display_get_display_mode_properties(physical_device,
82
&pdevice->wsi_device,
83
display,
84
property_count,
85
properties);
86
}
87
88
VkResult
89
panvk_CreateDisplayModeKHR(VkPhysicalDevice physical_device,
90
VkDisplayKHR display,
91
const VkDisplayModeCreateInfoKHR *create_info,
92
const VkAllocationCallbacks *allocator,
93
VkDisplayModeKHR *mode)
94
{
95
VK_FROM_HANDLE(panvk_physical_device, pdevice, physical_device);
96
97
return wsi_display_create_display_mode(physical_device,
98
&pdevice->wsi_device,
99
display,
100
create_info,
101
allocator,
102
mode);
103
}
104
105
VkResult
106
panvk_GetDisplayPlaneCapabilitiesKHR(VkPhysicalDevice physical_device,
107
VkDisplayModeKHR mode_khr,
108
uint32_t plane_index,
109
VkDisplayPlaneCapabilitiesKHR *capabilities)
110
{
111
VK_FROM_HANDLE(panvk_physical_device, pdevice, physical_device);
112
113
return wsi_get_display_plane_capabilities(physical_device,
114
&pdevice->wsi_device,
115
mode_khr,
116
plane_index,
117
capabilities);
118
}
119
120
VkResult
121
panvk_CreateDisplayPlaneSurfaceKHR(VkInstance _instance,
122
const VkDisplaySurfaceCreateInfoKHR *create_info,
123
const VkAllocationCallbacks *allocator,
124
VkSurfaceKHR *surface)
125
{
126
VK_FROM_HANDLE(panvk_instance, instance, _instance);
127
const VkAllocationCallbacks *alloc;
128
129
if (allocator)
130
alloc = allocator;
131
else
132
alloc = &instance->vk.alloc;
133
134
return wsi_create_display_surface(_instance, alloc,
135
create_info, surface);
136
}
137
138