Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/mesa
Path: blob/21.2-virgl/src/broadcom/vulkan/v3dvx_private.h
4560 views
1
/*
2
* Copyright © 2021 Raspberry Pi
3
*
4
* Permission is hereby granted, free of charge, to any person obtaining a
5
* copy of this software and associated documentation files (the "Software"),
6
* to deal in the Software without restriction, including without limitation
7
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
8
* and/or sell copies of the Software, and to permit persons to whom the
9
* Software is furnished to do so, subject to the following conditions:
10
*
11
* The above copyright notice and this permission notice (including the next
12
* paragraph) shall be included in all copies or substantial portions of the
13
* Software.
14
*
15
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
18
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
20
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
21
* IN THE SOFTWARE.
22
*/
23
24
/* This file generates the per-v3d-version function prototypes. It must only
25
* be included from v3dv_private.h.
26
*/
27
28
#ifndef V3DV_PRIVATE_H
29
#error This file is included by means other than v3dv_private.h
30
#endif
31
32
/* Used at v3dv_cmd_buffer */
33
void
34
v3dX(job_emit_binning_flush)(struct v3dv_job *job);
35
36
void
37
v3dX(cmd_buffer_end_render_pass_secondary)(struct v3dv_cmd_buffer *cmd_buffer);
38
39
void
40
v3dX(job_emit_clip_window)(struct v3dv_job *job, const VkRect2D *rect);
41
42
void
43
v3dX(cmd_buffer_emit_render_pass_rcl)(struct v3dv_cmd_buffer *cmd_buffer);
44
45
void
46
v3dX(cmd_buffer_emit_viewport)(struct v3dv_cmd_buffer *cmd_buffer);
47
48
void
49
v3dX(cmd_buffer_emit_stencil)(struct v3dv_cmd_buffer *cmd_buffer);
50
51
void
52
v3dX(cmd_buffer_emit_depth_bias)(struct v3dv_cmd_buffer *cmd_buffer);
53
54
void
55
v3dX(cmd_buffer_emit_line_width)(struct v3dv_cmd_buffer *cmd_buffer);
56
57
void
58
v3dX(cmd_buffer_emit_sample_state)(struct v3dv_cmd_buffer *cmd_buffer);
59
60
void
61
v3dX(cmd_buffer_emit_blend)(struct v3dv_cmd_buffer *cmd_buffer);
62
63
void
64
v3dX(cmd_buffer_emit_varyings_state)(struct v3dv_cmd_buffer *cmd_buffer);
65
66
void
67
v3dX(cmd_buffer_emit_configuration_bits)(struct v3dv_cmd_buffer *cmd_buffer);
68
69
void
70
v3dX(job_emit_binning_prolog)(struct v3dv_job *job,
71
const struct v3dv_frame_tiling *tiling,
72
uint32_t layers);
73
74
void
75
v3dX(cmd_buffer_execute_inside_pass)(struct v3dv_cmd_buffer *primary,
76
uint32_t cmd_buffer_count,
77
const VkCommandBuffer *cmd_buffers);
78
79
void
80
v3dX(cmd_buffer_emit_occlusion_query)(struct v3dv_cmd_buffer *cmd_buffer);
81
82
void
83
v3dX(cmd_buffer_emit_gl_shader_state)(struct v3dv_cmd_buffer *cmd_buffer);
84
85
86
void
87
v3dX(cmd_buffer_emit_draw)(struct v3dv_cmd_buffer *cmd_buffer,
88
struct v3dv_draw_info *info);
89
90
91
void
92
v3dX(cmd_buffer_emit_index_buffer)(struct v3dv_cmd_buffer *cmd_buffer);
93
94
void
95
v3dX(cmd_buffer_emit_draw_indexed)(struct v3dv_cmd_buffer *cmd_buffer,
96
uint32_t indexCount,
97
uint32_t instanceCount,
98
uint32_t firstIndex,
99
int32_t vertexOffset,
100
uint32_t firstInstance);
101
102
void
103
v3dX(cmd_buffer_emit_draw_indirect)(struct v3dv_cmd_buffer *cmd_buffer,
104
struct v3dv_buffer *buffer,
105
VkDeviceSize offset,
106
uint32_t drawCount,
107
uint32_t stride);
108
109
void
110
v3dX(cmd_buffer_emit_indexed_indirect)(struct v3dv_cmd_buffer *cmd_buffer,
111
struct v3dv_buffer *buffer,
112
VkDeviceSize offset,
113
uint32_t drawCount,
114
uint32_t stride);
115
116
void
117
v3dX(get_hw_clear_color)(const VkClearColorValue *color,
118
uint32_t internal_type,
119
uint32_t internal_size,
120
uint32_t *hw_color);
121
122
void
123
v3dX(cmd_buffer_render_pass_setup_render_target)(struct v3dv_cmd_buffer *cmd_buffer,
124
int rt,
125
uint32_t *rt_bpp,
126
uint32_t *rt_type,
127
uint32_t *rt_clamp);
128
129
/* Used at v3dv_device */
130
131
void
132
v3dX(pack_sampler_state)(struct v3dv_sampler *sampler,
133
const VkSamplerCreateInfo *pCreateInfo);
134
135
void
136
v3dX(framebuffer_compute_internal_bpp_msaa)(const struct v3dv_framebuffer *framebuffer,
137
const struct v3dv_subpass *subpass,
138
uint8_t *max_bpp, bool *msaa);
139
140
#ifdef DEBUG
141
void
142
v3dX(device_check_prepacked_sizes)(void);
143
#endif
144
145
/* Used at v3dv_format */
146
const struct v3dv_format *
147
v3dX(get_format)(VkFormat);
148
149
void
150
v3dX(get_internal_type_bpp_for_output_format)(uint32_t format,
151
uint32_t *type,
152
uint32_t *bpp);
153
154
bool
155
v3dX(format_supports_tlb_resolve)(const struct v3dv_format *format);
156
157
bool
158
v3dX(format_supports_blending)(const struct v3dv_format *format);
159
160
bool
161
v3dX(tfu_supports_tex_format)(uint32_t tex_format);
162
163
/* Used at v3dv_image */
164
165
void
166
v3dX(pack_texture_shader_state)(struct v3dv_device *device,
167
struct v3dv_image_view *iview);
168
169
void
170
v3dX(pack_texture_shader_state_from_buffer_view)(struct v3dv_device *device,
171
struct v3dv_buffer_view *buffer_view);
172
173
/* Used at v3dv_meta_copy */
174
175
uint32_t
176
v3dX(zs_buffer_from_aspect_bits)(VkImageAspectFlags aspects);
177
178
uint8_t
179
v3dX(get_internal_depth_type)(VkFormat format);
180
181
struct framebuffer_data;
182
183
void
184
v3dX(job_emit_copy_image_to_buffer_rcl)(struct v3dv_job *job,
185
struct v3dv_buffer *buffer,
186
struct v3dv_image *image,
187
struct framebuffer_data *framebuffer,
188
const VkBufferImageCopy2KHR *region);
189
190
void
191
v3dX(job_emit_resolve_image_rcl)(struct v3dv_job *job,
192
struct v3dv_image *dst,
193
struct v3dv_image *src,
194
struct framebuffer_data *framebuffer,
195
const VkImageResolve2KHR *region);
196
197
198
void
199
v3dX(job_emit_copy_buffer)(struct v3dv_job *job,
200
struct v3dv_bo *dst,
201
struct v3dv_bo *src,
202
uint32_t dst_offset,
203
uint32_t src_offset,
204
struct framebuffer_data *framebuffer,
205
uint32_t format,
206
uint32_t item_size);
207
208
void
209
v3dX(job_emit_copy_buffer_rcl)(struct v3dv_job *job,
210
struct v3dv_bo *dst,
211
struct v3dv_bo *src,
212
uint32_t dst_offset,
213
uint32_t src_offset,
214
struct framebuffer_data *framebuffer,
215
uint32_t format,
216
uint32_t item_size);
217
218
void
219
v3dX(job_emit_copy_image_rcl)(struct v3dv_job *job,
220
struct v3dv_image *dst,
221
struct v3dv_image *src,
222
struct framebuffer_data *framebuffer,
223
const VkImageCopy2KHR *region);
224
225
void
226
v3dX(cmd_buffer_emit_tfu_job)(struct v3dv_cmd_buffer *cmd_buffer,
227
struct v3dv_image *dst,
228
uint32_t dst_mip_level,
229
uint32_t dst_layer,
230
struct v3dv_image *src,
231
uint32_t src_mip_level,
232
uint32_t src_layer,
233
uint32_t width,
234
uint32_t height,
235
const struct v3dv_format *format);
236
237
void
238
v3dX(job_emit_clear_image_rcl)(struct v3dv_job *job,
239
struct v3dv_image *image,
240
struct framebuffer_data *framebuffer,
241
const union v3dv_clear_value *clear_value,
242
VkImageAspectFlags aspects,
243
uint32_t layer,
244
uint32_t level);
245
246
void
247
v3dX(job_emit_fill_buffer_rcl)(struct v3dv_job *job,
248
struct v3dv_bo *bo,
249
uint32_t offset,
250
struct framebuffer_data *framebuffer,
251
uint32_t data);
252
253
void
254
v3dX(job_emit_copy_buffer_to_image_rcl)(struct v3dv_job *job,
255
struct v3dv_image *image,
256
struct v3dv_buffer *buffer,
257
struct framebuffer_data *framebuffer,
258
const VkBufferImageCopy2KHR *region);
259
260
void
261
v3dX(get_internal_type_bpp_for_image_aspects)(VkFormat vk_format,
262
VkImageAspectFlags aspect_mask,
263
uint32_t *internal_type,
264
uint32_t *internal_bpp);
265
266
struct v3dv_job *
267
v3dX(cmd_buffer_copy_buffer)(struct v3dv_cmd_buffer *cmd_buffer,
268
struct v3dv_bo *dst,
269
uint32_t dst_offset,
270
struct v3dv_bo *src,
271
uint32_t src_offset,
272
const VkBufferCopy2KHR *region);
273
274
void
275
v3dX(cmd_buffer_fill_buffer)(struct v3dv_cmd_buffer *cmd_buffer,
276
struct v3dv_bo *bo,
277
uint32_t offset,
278
uint32_t size,
279
uint32_t data);
280
281
void
282
v3dX(setup_framebuffer_data)(struct framebuffer_data *fb,
283
VkFormat vk_format,
284
uint32_t internal_type,
285
const struct v3dv_frame_tiling *tiling);
286
287
/* Used at v3dv_pipeline */
288
void
289
v3dX(pipeline_pack_state)(struct v3dv_pipeline *pipeline,
290
const VkPipelineColorBlendStateCreateInfo *cb_info,
291
const VkPipelineDepthStencilStateCreateInfo *ds_info,
292
const VkPipelineRasterizationStateCreateInfo *rs_info,
293
const VkPipelineMultisampleStateCreateInfo *ms_info);
294
void
295
v3dX(pipeline_pack_compile_state)(struct v3dv_pipeline *pipeline,
296
const VkPipelineVertexInputStateCreateInfo *vi_info);
297
298
/* Used at v3dv_queue */
299
void
300
v3dX(job_emit_noop)(struct v3dv_job *job);
301
302
/* Used at v3dv_descriptor_set, and other descriptor set utils */
303
uint32_t v3dX(descriptor_bo_size)(VkDescriptorType type);
304
305
uint32_t v3dX(max_descriptor_bo_size)(void);
306
307
uint32_t v3dX(combined_image_sampler_texture_state_offset)(void);
308
309
uint32_t v3dX(combined_image_sampler_sampler_state_offset)(void);
310
311