• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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