1*bbecb9d1SAndroid Build Coastguard Worker /*
2*bbecb9d1SAndroid Build Coastguard Worker * Copyright 2020 Google LLC
3*bbecb9d1SAndroid Build Coastguard Worker * SPDX-License-Identifier: MIT
4*bbecb9d1SAndroid Build Coastguard Worker */
5*bbecb9d1SAndroid Build Coastguard Worker
6*bbecb9d1SAndroid Build Coastguard Worker #include "vkr_image.h"
7*bbecb9d1SAndroid Build Coastguard Worker
8*bbecb9d1SAndroid Build Coastguard Worker #include "vkr_image_gen.h"
9*bbecb9d1SAndroid Build Coastguard Worker #include "vkr_physical_device.h"
10*bbecb9d1SAndroid Build Coastguard Worker
11*bbecb9d1SAndroid Build Coastguard Worker static void
vkr_dispatch_vkCreateImage(struct vn_dispatch_context * dispatch,struct vn_command_vkCreateImage * args)12*bbecb9d1SAndroid Build Coastguard Worker vkr_dispatch_vkCreateImage(struct vn_dispatch_context *dispatch,
13*bbecb9d1SAndroid Build Coastguard Worker struct vn_command_vkCreateImage *args)
14*bbecb9d1SAndroid Build Coastguard Worker {
15*bbecb9d1SAndroid Build Coastguard Worker /* XXX If VkExternalMemoryImageCreateInfo is chained by the app, all is
16*bbecb9d1SAndroid Build Coastguard Worker * good. If it is not chained, we might still bind an external memory to
17*bbecb9d1SAndroid Build Coastguard Worker * the image, because vkr_dispatch_vkAllocateMemory makes any HOST_VISIBLE
18*bbecb9d1SAndroid Build Coastguard Worker * memory external. That is a spec violation.
19*bbecb9d1SAndroid Build Coastguard Worker *
20*bbecb9d1SAndroid Build Coastguard Worker * The discussions in vkr_dispatch_vkCreateBuffer are applicable to both
21*bbecb9d1SAndroid Build Coastguard Worker * buffers and images. Additionally, drivers usually use
22*bbecb9d1SAndroid Build Coastguard Worker * VkExternalMemoryImageCreateInfo to pick a well-defined image layout for
23*bbecb9d1SAndroid Build Coastguard Worker * interoperability with foreign queues. However, a well-defined layout
24*bbecb9d1SAndroid Build Coastguard Worker * might not exist for some images. When it does, it might still require a
25*bbecb9d1SAndroid Build Coastguard Worker * dedicated allocation or might have a degraded performance.
26*bbecb9d1SAndroid Build Coastguard Worker *
27*bbecb9d1SAndroid Build Coastguard Worker * On the other hand, binding an external memory to an image created
28*bbecb9d1SAndroid Build Coastguard Worker * without VkExternalMemoryImageCreateInfo usually works. Yes, it will
29*bbecb9d1SAndroid Build Coastguard Worker * explode if the external memory is accessed by foreign queues due to the
30*bbecb9d1SAndroid Build Coastguard Worker * lack of a well-defined image layout. But we never end up in that
31*bbecb9d1SAndroid Build Coastguard Worker * situation because the app does not consider the memory external.
32*bbecb9d1SAndroid Build Coastguard Worker */
33*bbecb9d1SAndroid Build Coastguard Worker
34*bbecb9d1SAndroid Build Coastguard Worker vkr_image_create_and_add(dispatch->data, args);
35*bbecb9d1SAndroid Build Coastguard Worker }
36*bbecb9d1SAndroid Build Coastguard Worker
37*bbecb9d1SAndroid Build Coastguard Worker static void
vkr_dispatch_vkDestroyImage(struct vn_dispatch_context * dispatch,struct vn_command_vkDestroyImage * args)38*bbecb9d1SAndroid Build Coastguard Worker vkr_dispatch_vkDestroyImage(struct vn_dispatch_context *dispatch,
39*bbecb9d1SAndroid Build Coastguard Worker struct vn_command_vkDestroyImage *args)
40*bbecb9d1SAndroid Build Coastguard Worker {
41*bbecb9d1SAndroid Build Coastguard Worker vkr_image_destroy_and_remove(dispatch->data, args);
42*bbecb9d1SAndroid Build Coastguard Worker }
43*bbecb9d1SAndroid Build Coastguard Worker
44*bbecb9d1SAndroid Build Coastguard Worker static void
vkr_dispatch_vkGetImageMemoryRequirements(UNUSED struct vn_dispatch_context * dispatch,struct vn_command_vkGetImageMemoryRequirements * args)45*bbecb9d1SAndroid Build Coastguard Worker vkr_dispatch_vkGetImageMemoryRequirements(
46*bbecb9d1SAndroid Build Coastguard Worker UNUSED struct vn_dispatch_context *dispatch,
47*bbecb9d1SAndroid Build Coastguard Worker struct vn_command_vkGetImageMemoryRequirements *args)
48*bbecb9d1SAndroid Build Coastguard Worker {
49*bbecb9d1SAndroid Build Coastguard Worker struct vkr_device *dev = vkr_device_from_handle(args->device);
50*bbecb9d1SAndroid Build Coastguard Worker struct vn_device_proc_table *vk = &dev->proc_table;
51*bbecb9d1SAndroid Build Coastguard Worker
52*bbecb9d1SAndroid Build Coastguard Worker vn_replace_vkGetImageMemoryRequirements_args_handle(args);
53*bbecb9d1SAndroid Build Coastguard Worker vk->GetImageMemoryRequirements(args->device, args->image, args->pMemoryRequirements);
54*bbecb9d1SAndroid Build Coastguard Worker }
55*bbecb9d1SAndroid Build Coastguard Worker
56*bbecb9d1SAndroid Build Coastguard Worker static void
vkr_dispatch_vkGetImageMemoryRequirements2(UNUSED struct vn_dispatch_context * dispatch,struct vn_command_vkGetImageMemoryRequirements2 * args)57*bbecb9d1SAndroid Build Coastguard Worker vkr_dispatch_vkGetImageMemoryRequirements2(
58*bbecb9d1SAndroid Build Coastguard Worker UNUSED struct vn_dispatch_context *dispatch,
59*bbecb9d1SAndroid Build Coastguard Worker struct vn_command_vkGetImageMemoryRequirements2 *args)
60*bbecb9d1SAndroid Build Coastguard Worker {
61*bbecb9d1SAndroid Build Coastguard Worker struct vkr_device *dev = vkr_device_from_handle(args->device);
62*bbecb9d1SAndroid Build Coastguard Worker struct vn_device_proc_table *vk = &dev->proc_table;
63*bbecb9d1SAndroid Build Coastguard Worker
64*bbecb9d1SAndroid Build Coastguard Worker vn_replace_vkGetImageMemoryRequirements2_args_handle(args);
65*bbecb9d1SAndroid Build Coastguard Worker vk->GetImageMemoryRequirements2(args->device, args->pInfo, args->pMemoryRequirements);
66*bbecb9d1SAndroid Build Coastguard Worker }
67*bbecb9d1SAndroid Build Coastguard Worker
68*bbecb9d1SAndroid Build Coastguard Worker static void
vkr_dispatch_vkGetImageSparseMemoryRequirements(UNUSED struct vn_dispatch_context * dispatch,struct vn_command_vkGetImageSparseMemoryRequirements * args)69*bbecb9d1SAndroid Build Coastguard Worker vkr_dispatch_vkGetImageSparseMemoryRequirements(
70*bbecb9d1SAndroid Build Coastguard Worker UNUSED struct vn_dispatch_context *dispatch,
71*bbecb9d1SAndroid Build Coastguard Worker struct vn_command_vkGetImageSparseMemoryRequirements *args)
72*bbecb9d1SAndroid Build Coastguard Worker {
73*bbecb9d1SAndroid Build Coastguard Worker struct vkr_device *dev = vkr_device_from_handle(args->device);
74*bbecb9d1SAndroid Build Coastguard Worker struct vn_device_proc_table *vk = &dev->proc_table;
75*bbecb9d1SAndroid Build Coastguard Worker
76*bbecb9d1SAndroid Build Coastguard Worker vn_replace_vkGetImageSparseMemoryRequirements_args_handle(args);
77*bbecb9d1SAndroid Build Coastguard Worker vk->GetImageSparseMemoryRequirements(args->device, args->image,
78*bbecb9d1SAndroid Build Coastguard Worker args->pSparseMemoryRequirementCount,
79*bbecb9d1SAndroid Build Coastguard Worker args->pSparseMemoryRequirements);
80*bbecb9d1SAndroid Build Coastguard Worker }
81*bbecb9d1SAndroid Build Coastguard Worker
82*bbecb9d1SAndroid Build Coastguard Worker static void
vkr_dispatch_vkGetImageSparseMemoryRequirements2(UNUSED struct vn_dispatch_context * dispatch,struct vn_command_vkGetImageSparseMemoryRequirements2 * args)83*bbecb9d1SAndroid Build Coastguard Worker vkr_dispatch_vkGetImageSparseMemoryRequirements2(
84*bbecb9d1SAndroid Build Coastguard Worker UNUSED struct vn_dispatch_context *dispatch,
85*bbecb9d1SAndroid Build Coastguard Worker struct vn_command_vkGetImageSparseMemoryRequirements2 *args)
86*bbecb9d1SAndroid Build Coastguard Worker {
87*bbecb9d1SAndroid Build Coastguard Worker struct vkr_device *dev = vkr_device_from_handle(args->device);
88*bbecb9d1SAndroid Build Coastguard Worker struct vn_device_proc_table *vk = &dev->proc_table;
89*bbecb9d1SAndroid Build Coastguard Worker
90*bbecb9d1SAndroid Build Coastguard Worker vn_replace_vkGetImageSparseMemoryRequirements2_args_handle(args);
91*bbecb9d1SAndroid Build Coastguard Worker vk->GetImageSparseMemoryRequirements2(args->device, args->pInfo,
92*bbecb9d1SAndroid Build Coastguard Worker args->pSparseMemoryRequirementCount,
93*bbecb9d1SAndroid Build Coastguard Worker args->pSparseMemoryRequirements);
94*bbecb9d1SAndroid Build Coastguard Worker }
95*bbecb9d1SAndroid Build Coastguard Worker
96*bbecb9d1SAndroid Build Coastguard Worker static void
vkr_dispatch_vkBindImageMemory(UNUSED struct vn_dispatch_context * dispatch,struct vn_command_vkBindImageMemory * args)97*bbecb9d1SAndroid Build Coastguard Worker vkr_dispatch_vkBindImageMemory(UNUSED struct vn_dispatch_context *dispatch,
98*bbecb9d1SAndroid Build Coastguard Worker struct vn_command_vkBindImageMemory *args)
99*bbecb9d1SAndroid Build Coastguard Worker {
100*bbecb9d1SAndroid Build Coastguard Worker struct vkr_device *dev = vkr_device_from_handle(args->device);
101*bbecb9d1SAndroid Build Coastguard Worker struct vn_device_proc_table *vk = &dev->proc_table;
102*bbecb9d1SAndroid Build Coastguard Worker
103*bbecb9d1SAndroid Build Coastguard Worker vn_replace_vkBindImageMemory_args_handle(args);
104*bbecb9d1SAndroid Build Coastguard Worker args->ret =
105*bbecb9d1SAndroid Build Coastguard Worker vk->BindImageMemory(args->device, args->image, args->memory, args->memoryOffset);
106*bbecb9d1SAndroid Build Coastguard Worker }
107*bbecb9d1SAndroid Build Coastguard Worker
108*bbecb9d1SAndroid Build Coastguard Worker static void
vkr_dispatch_vkBindImageMemory2(UNUSED struct vn_dispatch_context * dispatch,struct vn_command_vkBindImageMemory2 * args)109*bbecb9d1SAndroid Build Coastguard Worker vkr_dispatch_vkBindImageMemory2(UNUSED struct vn_dispatch_context *dispatch,
110*bbecb9d1SAndroid Build Coastguard Worker struct vn_command_vkBindImageMemory2 *args)
111*bbecb9d1SAndroid Build Coastguard Worker {
112*bbecb9d1SAndroid Build Coastguard Worker struct vkr_device *dev = vkr_device_from_handle(args->device);
113*bbecb9d1SAndroid Build Coastguard Worker struct vn_device_proc_table *vk = &dev->proc_table;
114*bbecb9d1SAndroid Build Coastguard Worker
115*bbecb9d1SAndroid Build Coastguard Worker vn_replace_vkBindImageMemory2_args_handle(args);
116*bbecb9d1SAndroid Build Coastguard Worker args->ret = vk->BindImageMemory2(args->device, args->bindInfoCount, args->pBindInfos);
117*bbecb9d1SAndroid Build Coastguard Worker }
118*bbecb9d1SAndroid Build Coastguard Worker
119*bbecb9d1SAndroid Build Coastguard Worker static void
vkr_dispatch_vkGetImageSubresourceLayout(UNUSED struct vn_dispatch_context * dispatch,struct vn_command_vkGetImageSubresourceLayout * args)120*bbecb9d1SAndroid Build Coastguard Worker vkr_dispatch_vkGetImageSubresourceLayout(
121*bbecb9d1SAndroid Build Coastguard Worker UNUSED struct vn_dispatch_context *dispatch,
122*bbecb9d1SAndroid Build Coastguard Worker struct vn_command_vkGetImageSubresourceLayout *args)
123*bbecb9d1SAndroid Build Coastguard Worker {
124*bbecb9d1SAndroid Build Coastguard Worker struct vkr_device *dev = vkr_device_from_handle(args->device);
125*bbecb9d1SAndroid Build Coastguard Worker struct vn_device_proc_table *vk = &dev->proc_table;
126*bbecb9d1SAndroid Build Coastguard Worker
127*bbecb9d1SAndroid Build Coastguard Worker vn_replace_vkGetImageSubresourceLayout_args_handle(args);
128*bbecb9d1SAndroid Build Coastguard Worker vk->GetImageSubresourceLayout(args->device, args->image, args->pSubresource,
129*bbecb9d1SAndroid Build Coastguard Worker args->pLayout);
130*bbecb9d1SAndroid Build Coastguard Worker }
131*bbecb9d1SAndroid Build Coastguard Worker
132*bbecb9d1SAndroid Build Coastguard Worker static void
vkr_dispatch_vkGetImageDrmFormatModifierPropertiesEXT(UNUSED struct vn_dispatch_context * dispatch,struct vn_command_vkGetImageDrmFormatModifierPropertiesEXT * args)133*bbecb9d1SAndroid Build Coastguard Worker vkr_dispatch_vkGetImageDrmFormatModifierPropertiesEXT(
134*bbecb9d1SAndroid Build Coastguard Worker UNUSED struct vn_dispatch_context *dispatch,
135*bbecb9d1SAndroid Build Coastguard Worker struct vn_command_vkGetImageDrmFormatModifierPropertiesEXT *args)
136*bbecb9d1SAndroid Build Coastguard Worker {
137*bbecb9d1SAndroid Build Coastguard Worker struct vkr_device *dev = vkr_device_from_handle(args->device);
138*bbecb9d1SAndroid Build Coastguard Worker struct vn_device_proc_table *vk = &dev->proc_table;
139*bbecb9d1SAndroid Build Coastguard Worker
140*bbecb9d1SAndroid Build Coastguard Worker vn_replace_vkGetImageDrmFormatModifierPropertiesEXT_args_handle(args);
141*bbecb9d1SAndroid Build Coastguard Worker args->ret = vk->GetImageDrmFormatModifierPropertiesEXT(args->device, args->image,
142*bbecb9d1SAndroid Build Coastguard Worker args->pProperties);
143*bbecb9d1SAndroid Build Coastguard Worker }
144*bbecb9d1SAndroid Build Coastguard Worker
145*bbecb9d1SAndroid Build Coastguard Worker static void
vkr_dispatch_vkCreateImageView(struct vn_dispatch_context * dispatch,struct vn_command_vkCreateImageView * args)146*bbecb9d1SAndroid Build Coastguard Worker vkr_dispatch_vkCreateImageView(struct vn_dispatch_context *dispatch,
147*bbecb9d1SAndroid Build Coastguard Worker struct vn_command_vkCreateImageView *args)
148*bbecb9d1SAndroid Build Coastguard Worker {
149*bbecb9d1SAndroid Build Coastguard Worker vkr_image_view_create_and_add(dispatch->data, args);
150*bbecb9d1SAndroid Build Coastguard Worker }
151*bbecb9d1SAndroid Build Coastguard Worker
152*bbecb9d1SAndroid Build Coastguard Worker static void
vkr_dispatch_vkDestroyImageView(struct vn_dispatch_context * dispatch,struct vn_command_vkDestroyImageView * args)153*bbecb9d1SAndroid Build Coastguard Worker vkr_dispatch_vkDestroyImageView(struct vn_dispatch_context *dispatch,
154*bbecb9d1SAndroid Build Coastguard Worker struct vn_command_vkDestroyImageView *args)
155*bbecb9d1SAndroid Build Coastguard Worker {
156*bbecb9d1SAndroid Build Coastguard Worker vkr_image_view_destroy_and_remove(dispatch->data, args);
157*bbecb9d1SAndroid Build Coastguard Worker }
158*bbecb9d1SAndroid Build Coastguard Worker
159*bbecb9d1SAndroid Build Coastguard Worker static void
vkr_dispatch_vkCreateSampler(struct vn_dispatch_context * dispatch,struct vn_command_vkCreateSampler * args)160*bbecb9d1SAndroid Build Coastguard Worker vkr_dispatch_vkCreateSampler(struct vn_dispatch_context *dispatch,
161*bbecb9d1SAndroid Build Coastguard Worker struct vn_command_vkCreateSampler *args)
162*bbecb9d1SAndroid Build Coastguard Worker {
163*bbecb9d1SAndroid Build Coastguard Worker vkr_sampler_create_and_add(dispatch->data, args);
164*bbecb9d1SAndroid Build Coastguard Worker }
165*bbecb9d1SAndroid Build Coastguard Worker
166*bbecb9d1SAndroid Build Coastguard Worker static void
vkr_dispatch_vkDestroySampler(struct vn_dispatch_context * dispatch,struct vn_command_vkDestroySampler * args)167*bbecb9d1SAndroid Build Coastguard Worker vkr_dispatch_vkDestroySampler(struct vn_dispatch_context *dispatch,
168*bbecb9d1SAndroid Build Coastguard Worker struct vn_command_vkDestroySampler *args)
169*bbecb9d1SAndroid Build Coastguard Worker {
170*bbecb9d1SAndroid Build Coastguard Worker vkr_sampler_destroy_and_remove(dispatch->data, args);
171*bbecb9d1SAndroid Build Coastguard Worker }
172*bbecb9d1SAndroid Build Coastguard Worker
173*bbecb9d1SAndroid Build Coastguard Worker static void
vkr_dispatch_vkCreateSamplerYcbcrConversion(struct vn_dispatch_context * dispatch,struct vn_command_vkCreateSamplerYcbcrConversion * args)174*bbecb9d1SAndroid Build Coastguard Worker vkr_dispatch_vkCreateSamplerYcbcrConversion(
175*bbecb9d1SAndroid Build Coastguard Worker struct vn_dispatch_context *dispatch,
176*bbecb9d1SAndroid Build Coastguard Worker struct vn_command_vkCreateSamplerYcbcrConversion *args)
177*bbecb9d1SAndroid Build Coastguard Worker {
178*bbecb9d1SAndroid Build Coastguard Worker vkr_sampler_ycbcr_conversion_create_and_add(dispatch->data, args);
179*bbecb9d1SAndroid Build Coastguard Worker }
180*bbecb9d1SAndroid Build Coastguard Worker
181*bbecb9d1SAndroid Build Coastguard Worker static void
vkr_dispatch_vkDestroySamplerYcbcrConversion(struct vn_dispatch_context * dispatch,struct vn_command_vkDestroySamplerYcbcrConversion * args)182*bbecb9d1SAndroid Build Coastguard Worker vkr_dispatch_vkDestroySamplerYcbcrConversion(
183*bbecb9d1SAndroid Build Coastguard Worker struct vn_dispatch_context *dispatch,
184*bbecb9d1SAndroid Build Coastguard Worker struct vn_command_vkDestroySamplerYcbcrConversion *args)
185*bbecb9d1SAndroid Build Coastguard Worker {
186*bbecb9d1SAndroid Build Coastguard Worker vkr_sampler_ycbcr_conversion_destroy_and_remove(dispatch->data, args);
187*bbecb9d1SAndroid Build Coastguard Worker }
188*bbecb9d1SAndroid Build Coastguard Worker
189*bbecb9d1SAndroid Build Coastguard Worker static void
vkr_dispatch_vkGetDeviceImageMemoryRequirements(UNUSED struct vn_dispatch_context * ctx,struct vn_command_vkGetDeviceImageMemoryRequirements * args)190*bbecb9d1SAndroid Build Coastguard Worker vkr_dispatch_vkGetDeviceImageMemoryRequirements(
191*bbecb9d1SAndroid Build Coastguard Worker UNUSED struct vn_dispatch_context *ctx,
192*bbecb9d1SAndroid Build Coastguard Worker struct vn_command_vkGetDeviceImageMemoryRequirements *args)
193*bbecb9d1SAndroid Build Coastguard Worker {
194*bbecb9d1SAndroid Build Coastguard Worker struct vkr_device *dev = vkr_device_from_handle(args->device);
195*bbecb9d1SAndroid Build Coastguard Worker struct vn_device_proc_table *vk = &dev->proc_table;
196*bbecb9d1SAndroid Build Coastguard Worker
197*bbecb9d1SAndroid Build Coastguard Worker vn_replace_vkGetDeviceImageMemoryRequirements_args_handle(args);
198*bbecb9d1SAndroid Build Coastguard Worker vk->GetDeviceImageMemoryRequirements(args->device, args->pInfo,
199*bbecb9d1SAndroid Build Coastguard Worker args->pMemoryRequirements);
200*bbecb9d1SAndroid Build Coastguard Worker }
201*bbecb9d1SAndroid Build Coastguard Worker
202*bbecb9d1SAndroid Build Coastguard Worker static void
vkr_dispatch_vkGetDeviceImageSparseMemoryRequirements(UNUSED struct vn_dispatch_context * ctx,struct vn_command_vkGetDeviceImageSparseMemoryRequirements * args)203*bbecb9d1SAndroid Build Coastguard Worker vkr_dispatch_vkGetDeviceImageSparseMemoryRequirements(
204*bbecb9d1SAndroid Build Coastguard Worker UNUSED struct vn_dispatch_context *ctx,
205*bbecb9d1SAndroid Build Coastguard Worker struct vn_command_vkGetDeviceImageSparseMemoryRequirements *args)
206*bbecb9d1SAndroid Build Coastguard Worker {
207*bbecb9d1SAndroid Build Coastguard Worker struct vkr_device *dev = vkr_device_from_handle(args->device);
208*bbecb9d1SAndroid Build Coastguard Worker struct vn_device_proc_table *vk = &dev->proc_table;
209*bbecb9d1SAndroid Build Coastguard Worker
210*bbecb9d1SAndroid Build Coastguard Worker vn_replace_vkGetDeviceImageSparseMemoryRequirements_args_handle(args);
211*bbecb9d1SAndroid Build Coastguard Worker vk->GetDeviceImageSparseMemoryRequirements(args->device, args->pInfo,
212*bbecb9d1SAndroid Build Coastguard Worker args->pSparseMemoryRequirementCount,
213*bbecb9d1SAndroid Build Coastguard Worker args->pSparseMemoryRequirements);
214*bbecb9d1SAndroid Build Coastguard Worker }
215*bbecb9d1SAndroid Build Coastguard Worker
216*bbecb9d1SAndroid Build Coastguard Worker void
vkr_context_init_image_dispatch(struct vkr_context * ctx)217*bbecb9d1SAndroid Build Coastguard Worker vkr_context_init_image_dispatch(struct vkr_context *ctx)
218*bbecb9d1SAndroid Build Coastguard Worker {
219*bbecb9d1SAndroid Build Coastguard Worker struct vn_dispatch_context *dispatch = &ctx->dispatch;
220*bbecb9d1SAndroid Build Coastguard Worker
221*bbecb9d1SAndroid Build Coastguard Worker dispatch->dispatch_vkCreateImage = vkr_dispatch_vkCreateImage;
222*bbecb9d1SAndroid Build Coastguard Worker dispatch->dispatch_vkDestroyImage = vkr_dispatch_vkDestroyImage;
223*bbecb9d1SAndroid Build Coastguard Worker dispatch->dispatch_vkGetImageMemoryRequirements =
224*bbecb9d1SAndroid Build Coastguard Worker vkr_dispatch_vkGetImageMemoryRequirements;
225*bbecb9d1SAndroid Build Coastguard Worker dispatch->dispatch_vkGetImageMemoryRequirements2 =
226*bbecb9d1SAndroid Build Coastguard Worker vkr_dispatch_vkGetImageMemoryRequirements2;
227*bbecb9d1SAndroid Build Coastguard Worker dispatch->dispatch_vkGetImageSparseMemoryRequirements =
228*bbecb9d1SAndroid Build Coastguard Worker vkr_dispatch_vkGetImageSparseMemoryRequirements;
229*bbecb9d1SAndroid Build Coastguard Worker dispatch->dispatch_vkGetImageSparseMemoryRequirements2 =
230*bbecb9d1SAndroid Build Coastguard Worker vkr_dispatch_vkGetImageSparseMemoryRequirements2;
231*bbecb9d1SAndroid Build Coastguard Worker dispatch->dispatch_vkBindImageMemory = vkr_dispatch_vkBindImageMemory;
232*bbecb9d1SAndroid Build Coastguard Worker dispatch->dispatch_vkBindImageMemory2 = vkr_dispatch_vkBindImageMemory2;
233*bbecb9d1SAndroid Build Coastguard Worker dispatch->dispatch_vkGetImageSubresourceLayout =
234*bbecb9d1SAndroid Build Coastguard Worker vkr_dispatch_vkGetImageSubresourceLayout;
235*bbecb9d1SAndroid Build Coastguard Worker
236*bbecb9d1SAndroid Build Coastguard Worker dispatch->dispatch_vkGetImageDrmFormatModifierPropertiesEXT =
237*bbecb9d1SAndroid Build Coastguard Worker vkr_dispatch_vkGetImageDrmFormatModifierPropertiesEXT;
238*bbecb9d1SAndroid Build Coastguard Worker dispatch->dispatch_vkGetDeviceImageMemoryRequirements =
239*bbecb9d1SAndroid Build Coastguard Worker vkr_dispatch_vkGetDeviceImageMemoryRequirements;
240*bbecb9d1SAndroid Build Coastguard Worker dispatch->dispatch_vkGetDeviceImageSparseMemoryRequirements =
241*bbecb9d1SAndroid Build Coastguard Worker vkr_dispatch_vkGetDeviceImageSparseMemoryRequirements;
242*bbecb9d1SAndroid Build Coastguard Worker }
243*bbecb9d1SAndroid Build Coastguard Worker
244*bbecb9d1SAndroid Build Coastguard Worker void
vkr_context_init_image_view_dispatch(struct vkr_context * ctx)245*bbecb9d1SAndroid Build Coastguard Worker vkr_context_init_image_view_dispatch(struct vkr_context *ctx)
246*bbecb9d1SAndroid Build Coastguard Worker {
247*bbecb9d1SAndroid Build Coastguard Worker struct vn_dispatch_context *dispatch = &ctx->dispatch;
248*bbecb9d1SAndroid Build Coastguard Worker
249*bbecb9d1SAndroid Build Coastguard Worker dispatch->dispatch_vkCreateImageView = vkr_dispatch_vkCreateImageView;
250*bbecb9d1SAndroid Build Coastguard Worker dispatch->dispatch_vkDestroyImageView = vkr_dispatch_vkDestroyImageView;
251*bbecb9d1SAndroid Build Coastguard Worker }
252*bbecb9d1SAndroid Build Coastguard Worker
253*bbecb9d1SAndroid Build Coastguard Worker void
vkr_context_init_sampler_dispatch(struct vkr_context * ctx)254*bbecb9d1SAndroid Build Coastguard Worker vkr_context_init_sampler_dispatch(struct vkr_context *ctx)
255*bbecb9d1SAndroid Build Coastguard Worker {
256*bbecb9d1SAndroid Build Coastguard Worker struct vn_dispatch_context *dispatch = &ctx->dispatch;
257*bbecb9d1SAndroid Build Coastguard Worker
258*bbecb9d1SAndroid Build Coastguard Worker dispatch->dispatch_vkCreateSampler = vkr_dispatch_vkCreateSampler;
259*bbecb9d1SAndroid Build Coastguard Worker dispatch->dispatch_vkDestroySampler = vkr_dispatch_vkDestroySampler;
260*bbecb9d1SAndroid Build Coastguard Worker }
261*bbecb9d1SAndroid Build Coastguard Worker
262*bbecb9d1SAndroid Build Coastguard Worker void
vkr_context_init_sampler_ycbcr_conversion_dispatch(struct vkr_context * ctx)263*bbecb9d1SAndroid Build Coastguard Worker vkr_context_init_sampler_ycbcr_conversion_dispatch(struct vkr_context *ctx)
264*bbecb9d1SAndroid Build Coastguard Worker {
265*bbecb9d1SAndroid Build Coastguard Worker struct vn_dispatch_context *dispatch = &ctx->dispatch;
266*bbecb9d1SAndroid Build Coastguard Worker
267*bbecb9d1SAndroid Build Coastguard Worker dispatch->dispatch_vkCreateSamplerYcbcrConversion =
268*bbecb9d1SAndroid Build Coastguard Worker vkr_dispatch_vkCreateSamplerYcbcrConversion;
269*bbecb9d1SAndroid Build Coastguard Worker dispatch->dispatch_vkDestroySamplerYcbcrConversion =
270*bbecb9d1SAndroid Build Coastguard Worker vkr_dispatch_vkDestroySamplerYcbcrConversion;
271*bbecb9d1SAndroid Build Coastguard Worker }
272