1 /* This file is generated by venus-protocol. See vn_protocol_renderer.h. */
2
3 /*
4 * Copyright 2020 Google LLC
5 * SPDX-License-Identifier: MIT
6 */
7
8 #ifndef VN_PROTOCOL_RENDERER_SHADER_MODULE_H
9 #define VN_PROTOCOL_RENDERER_SHADER_MODULE_H
10
11 #include "vn_protocol_renderer_structs.h"
12
13 #pragma GCC diagnostic push
14 #pragma GCC diagnostic ignored "-Wpointer-arith"
15 #pragma GCC diagnostic ignored "-Wunused-parameter"
16
17 /* struct VkShaderModuleCreateInfo chain */
18
19 static inline void *
vn_decode_VkShaderModuleCreateInfo_pnext_temp(struct vn_cs_decoder * dec)20 vn_decode_VkShaderModuleCreateInfo_pnext_temp(struct vn_cs_decoder *dec)
21 {
22 /* no known/supported struct */
23 if (vn_decode_simple_pointer(dec))
24 vn_cs_decoder_set_fatal(dec);
25 return NULL;
26 }
27
28 static inline void
vn_decode_VkShaderModuleCreateInfo_self_temp(struct vn_cs_decoder * dec,VkShaderModuleCreateInfo * val)29 vn_decode_VkShaderModuleCreateInfo_self_temp(struct vn_cs_decoder *dec, VkShaderModuleCreateInfo *val)
30 {
31 /* skip val->{sType,pNext} */
32 vn_decode_VkFlags(dec, &val->flags);
33 vn_decode_size_t(dec, &val->codeSize);
34 if (vn_peek_array_size(dec)) {
35 const size_t array_size = vn_decode_array_size(dec, val->codeSize / 4);
36 val->pCode = vn_cs_decoder_alloc_temp(dec, sizeof(*val->pCode) * array_size);
37 if (!val->pCode) return;
38 vn_decode_uint32_t_array(dec, (uint32_t *)val->pCode, array_size);
39 } else {
40 vn_decode_array_size(dec, val->codeSize / 4);
41 val->pCode = NULL;
42 }
43 }
44
45 static inline void
vn_decode_VkShaderModuleCreateInfo_temp(struct vn_cs_decoder * dec,VkShaderModuleCreateInfo * val)46 vn_decode_VkShaderModuleCreateInfo_temp(struct vn_cs_decoder *dec, VkShaderModuleCreateInfo *val)
47 {
48 VkStructureType stype;
49 vn_decode_VkStructureType(dec, &stype);
50 if (stype != VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO)
51 vn_cs_decoder_set_fatal(dec);
52
53 val->sType = stype;
54 val->pNext = vn_decode_VkShaderModuleCreateInfo_pnext_temp(dec);
55 vn_decode_VkShaderModuleCreateInfo_self_temp(dec, val);
56 }
57
58 static inline void
vn_replace_VkShaderModuleCreateInfo_handle_self(VkShaderModuleCreateInfo * val)59 vn_replace_VkShaderModuleCreateInfo_handle_self(VkShaderModuleCreateInfo *val)
60 {
61 /* skip val->sType */
62 /* skip val->pNext */
63 /* skip val->flags */
64 /* skip val->codeSize */
65 /* skip val->pCode */
66 }
67
68 static inline void
vn_replace_VkShaderModuleCreateInfo_handle(VkShaderModuleCreateInfo * val)69 vn_replace_VkShaderModuleCreateInfo_handle(VkShaderModuleCreateInfo *val)
70 {
71 struct VkBaseOutStructure *pnext = (struct VkBaseOutStructure *)val;
72
73 do {
74 switch ((int32_t)pnext->sType) {
75 case VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO:
76 vn_replace_VkShaderModuleCreateInfo_handle_self((VkShaderModuleCreateInfo *)pnext);
77 break;
78 default:
79 /* ignore unknown/unsupported struct */
80 break;
81 }
82 pnext = pnext->pNext;
83 } while (pnext);
84 }
85
vn_decode_vkCreateShaderModule_args_temp(struct vn_cs_decoder * dec,struct vn_command_vkCreateShaderModule * args)86 static inline void vn_decode_vkCreateShaderModule_args_temp(struct vn_cs_decoder *dec, struct vn_command_vkCreateShaderModule *args)
87 {
88 vn_decode_VkDevice_lookup(dec, &args->device);
89 if (vn_decode_simple_pointer(dec)) {
90 args->pCreateInfo = vn_cs_decoder_alloc_temp(dec, sizeof(*args->pCreateInfo));
91 if (!args->pCreateInfo) return;
92 vn_decode_VkShaderModuleCreateInfo_temp(dec, (VkShaderModuleCreateInfo *)args->pCreateInfo);
93 } else {
94 args->pCreateInfo = NULL;
95 vn_cs_decoder_set_fatal(dec);
96 }
97 if (vn_decode_simple_pointer(dec)) {
98 vn_cs_decoder_set_fatal(dec);
99 } else {
100 args->pAllocator = NULL;
101 }
102 if (vn_decode_simple_pointer(dec)) {
103 args->pShaderModule = vn_cs_decoder_alloc_temp(dec, sizeof(*args->pShaderModule));
104 if (!args->pShaderModule) return;
105 vn_decode_VkShaderModule(dec, args->pShaderModule);
106 } else {
107 args->pShaderModule = NULL;
108 vn_cs_decoder_set_fatal(dec);
109 }
110 }
111
vn_replace_vkCreateShaderModule_args_handle(struct vn_command_vkCreateShaderModule * args)112 static inline void vn_replace_vkCreateShaderModule_args_handle(struct vn_command_vkCreateShaderModule *args)
113 {
114 vn_replace_VkDevice_handle(&args->device);
115 if (args->pCreateInfo)
116 vn_replace_VkShaderModuleCreateInfo_handle((VkShaderModuleCreateInfo *)args->pCreateInfo);
117 /* skip args->pAllocator */
118 /* skip args->pShaderModule */
119 }
120
vn_encode_vkCreateShaderModule_reply(struct vn_cs_encoder * enc,const struct vn_command_vkCreateShaderModule * args)121 static inline void vn_encode_vkCreateShaderModule_reply(struct vn_cs_encoder *enc, const struct vn_command_vkCreateShaderModule *args)
122 {
123 vn_encode_VkCommandTypeEXT(enc, &(VkCommandTypeEXT){VK_COMMAND_TYPE_vkCreateShaderModule_EXT});
124
125 vn_encode_VkResult(enc, &args->ret);
126 /* skip args->device */
127 /* skip args->pCreateInfo */
128 /* skip args->pAllocator */
129 if (vn_encode_simple_pointer(enc, args->pShaderModule))
130 vn_encode_VkShaderModule(enc, args->pShaderModule);
131 }
132
vn_decode_vkDestroyShaderModule_args_temp(struct vn_cs_decoder * dec,struct vn_command_vkDestroyShaderModule * args)133 static inline void vn_decode_vkDestroyShaderModule_args_temp(struct vn_cs_decoder *dec, struct vn_command_vkDestroyShaderModule *args)
134 {
135 vn_decode_VkDevice_lookup(dec, &args->device);
136 vn_decode_VkShaderModule_lookup(dec, &args->shaderModule);
137 if (vn_decode_simple_pointer(dec)) {
138 vn_cs_decoder_set_fatal(dec);
139 } else {
140 args->pAllocator = NULL;
141 }
142 }
143
vn_replace_vkDestroyShaderModule_args_handle(struct vn_command_vkDestroyShaderModule * args)144 static inline void vn_replace_vkDestroyShaderModule_args_handle(struct vn_command_vkDestroyShaderModule *args)
145 {
146 vn_replace_VkDevice_handle(&args->device);
147 vn_replace_VkShaderModule_handle(&args->shaderModule);
148 /* skip args->pAllocator */
149 }
150
vn_encode_vkDestroyShaderModule_reply(struct vn_cs_encoder * enc,const struct vn_command_vkDestroyShaderModule * args)151 static inline void vn_encode_vkDestroyShaderModule_reply(struct vn_cs_encoder *enc, const struct vn_command_vkDestroyShaderModule *args)
152 {
153 vn_encode_VkCommandTypeEXT(enc, &(VkCommandTypeEXT){VK_COMMAND_TYPE_vkDestroyShaderModule_EXT});
154
155 /* skip args->device */
156 /* skip args->shaderModule */
157 /* skip args->pAllocator */
158 }
159
vn_dispatch_vkCreateShaderModule(struct vn_dispatch_context * ctx,VkCommandFlagsEXT flags)160 static inline void vn_dispatch_vkCreateShaderModule(struct vn_dispatch_context *ctx, VkCommandFlagsEXT flags)
161 {
162 struct vn_command_vkCreateShaderModule args;
163
164 if (!ctx->dispatch_vkCreateShaderModule) {
165 vn_cs_decoder_set_fatal(ctx->decoder);
166 return;
167 }
168
169 vn_decode_vkCreateShaderModule_args_temp(ctx->decoder, &args);
170 if (!args.device) {
171 vn_cs_decoder_set_fatal(ctx->decoder);
172 return;
173 }
174
175 if (!vn_cs_decoder_get_fatal(ctx->decoder))
176 ctx->dispatch_vkCreateShaderModule(ctx, &args);
177
178 #ifdef DEBUG
179 if (!vn_cs_decoder_get_fatal(ctx->decoder) && vn_dispatch_should_log_result(args.ret))
180 vn_dispatch_debug_log(ctx, "vkCreateShaderModule returned %d", args.ret);
181 #endif
182
183 if (!vn_cs_decoder_get_fatal(ctx->decoder) && (flags & VK_COMMAND_GENERATE_REPLY_BIT_EXT))
184 vn_encode_vkCreateShaderModule_reply(ctx->encoder, &args);
185
186 vn_cs_decoder_reset_temp_pool(ctx->decoder);
187 }
188
vn_dispatch_vkDestroyShaderModule(struct vn_dispatch_context * ctx,VkCommandFlagsEXT flags)189 static inline void vn_dispatch_vkDestroyShaderModule(struct vn_dispatch_context *ctx, VkCommandFlagsEXT flags)
190 {
191 struct vn_command_vkDestroyShaderModule args;
192
193 if (!ctx->dispatch_vkDestroyShaderModule) {
194 vn_cs_decoder_set_fatal(ctx->decoder);
195 return;
196 }
197
198 vn_decode_vkDestroyShaderModule_args_temp(ctx->decoder, &args);
199 if (!args.device) {
200 vn_cs_decoder_set_fatal(ctx->decoder);
201 return;
202 }
203
204 if (!vn_cs_decoder_get_fatal(ctx->decoder))
205 ctx->dispatch_vkDestroyShaderModule(ctx, &args);
206
207
208 if (!vn_cs_decoder_get_fatal(ctx->decoder) && (flags & VK_COMMAND_GENERATE_REPLY_BIT_EXT))
209 vn_encode_vkDestroyShaderModule_reply(ctx->encoder, &args);
210
211 vn_cs_decoder_reset_temp_pool(ctx->decoder);
212 }
213
214 #pragma GCC diagnostic pop
215
216 #endif /* VN_PROTOCOL_RENDERER_SHADER_MODULE_H */
217