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_pipeline.h"
7*bbecb9d1SAndroid Build Coastguard Worker
8*bbecb9d1SAndroid Build Coastguard Worker #include "vkr_pipeline_gen.h"
9*bbecb9d1SAndroid Build Coastguard Worker
10*bbecb9d1SAndroid Build Coastguard Worker static void
vkr_dispatch_vkCreateShaderModule(struct vn_dispatch_context * dispatch,struct vn_command_vkCreateShaderModule * args)11*bbecb9d1SAndroid Build Coastguard Worker vkr_dispatch_vkCreateShaderModule(struct vn_dispatch_context *dispatch,
12*bbecb9d1SAndroid Build Coastguard Worker struct vn_command_vkCreateShaderModule *args)
13*bbecb9d1SAndroid Build Coastguard Worker {
14*bbecb9d1SAndroid Build Coastguard Worker vkr_shader_module_create_and_add(dispatch->data, args);
15*bbecb9d1SAndroid Build Coastguard Worker }
16*bbecb9d1SAndroid Build Coastguard Worker
17*bbecb9d1SAndroid Build Coastguard Worker static void
vkr_dispatch_vkDestroyShaderModule(struct vn_dispatch_context * dispatch,struct vn_command_vkDestroyShaderModule * args)18*bbecb9d1SAndroid Build Coastguard Worker vkr_dispatch_vkDestroyShaderModule(struct vn_dispatch_context *dispatch,
19*bbecb9d1SAndroid Build Coastguard Worker struct vn_command_vkDestroyShaderModule *args)
20*bbecb9d1SAndroid Build Coastguard Worker {
21*bbecb9d1SAndroid Build Coastguard Worker vkr_shader_module_destroy_and_remove(dispatch->data, args);
22*bbecb9d1SAndroid Build Coastguard Worker }
23*bbecb9d1SAndroid Build Coastguard Worker
24*bbecb9d1SAndroid Build Coastguard Worker static void
vkr_dispatch_vkCreatePipelineLayout(struct vn_dispatch_context * dispatch,struct vn_command_vkCreatePipelineLayout * args)25*bbecb9d1SAndroid Build Coastguard Worker vkr_dispatch_vkCreatePipelineLayout(struct vn_dispatch_context *dispatch,
26*bbecb9d1SAndroid Build Coastguard Worker struct vn_command_vkCreatePipelineLayout *args)
27*bbecb9d1SAndroid Build Coastguard Worker {
28*bbecb9d1SAndroid Build Coastguard Worker vkr_pipeline_layout_create_and_add(dispatch->data, args);
29*bbecb9d1SAndroid Build Coastguard Worker }
30*bbecb9d1SAndroid Build Coastguard Worker
31*bbecb9d1SAndroid Build Coastguard Worker static void
vkr_dispatch_vkDestroyPipelineLayout(struct vn_dispatch_context * dispatch,struct vn_command_vkDestroyPipelineLayout * args)32*bbecb9d1SAndroid Build Coastguard Worker vkr_dispatch_vkDestroyPipelineLayout(struct vn_dispatch_context *dispatch,
33*bbecb9d1SAndroid Build Coastguard Worker struct vn_command_vkDestroyPipelineLayout *args)
34*bbecb9d1SAndroid Build Coastguard Worker {
35*bbecb9d1SAndroid Build Coastguard Worker vkr_pipeline_layout_destroy_and_remove(dispatch->data, args);
36*bbecb9d1SAndroid Build Coastguard Worker }
37*bbecb9d1SAndroid Build Coastguard Worker
38*bbecb9d1SAndroid Build Coastguard Worker static void
vkr_dispatch_vkCreatePipelineCache(struct vn_dispatch_context * dispatch,struct vn_command_vkCreatePipelineCache * args)39*bbecb9d1SAndroid Build Coastguard Worker vkr_dispatch_vkCreatePipelineCache(struct vn_dispatch_context *dispatch,
40*bbecb9d1SAndroid Build Coastguard Worker struct vn_command_vkCreatePipelineCache *args)
41*bbecb9d1SAndroid Build Coastguard Worker {
42*bbecb9d1SAndroid Build Coastguard Worker vkr_pipeline_cache_create_and_add(dispatch->data, args);
43*bbecb9d1SAndroid Build Coastguard Worker }
44*bbecb9d1SAndroid Build Coastguard Worker
45*bbecb9d1SAndroid Build Coastguard Worker static void
vkr_dispatch_vkDestroyPipelineCache(struct vn_dispatch_context * dispatch,struct vn_command_vkDestroyPipelineCache * args)46*bbecb9d1SAndroid Build Coastguard Worker vkr_dispatch_vkDestroyPipelineCache(struct vn_dispatch_context *dispatch,
47*bbecb9d1SAndroid Build Coastguard Worker struct vn_command_vkDestroyPipelineCache *args)
48*bbecb9d1SAndroid Build Coastguard Worker {
49*bbecb9d1SAndroid Build Coastguard Worker vkr_pipeline_cache_destroy_and_remove(dispatch->data, args);
50*bbecb9d1SAndroid Build Coastguard Worker }
51*bbecb9d1SAndroid Build Coastguard Worker
52*bbecb9d1SAndroid Build Coastguard Worker static void
vkr_dispatch_vkGetPipelineCacheData(UNUSED struct vn_dispatch_context * dispatch,struct vn_command_vkGetPipelineCacheData * args)53*bbecb9d1SAndroid Build Coastguard Worker vkr_dispatch_vkGetPipelineCacheData(UNUSED struct vn_dispatch_context *dispatch,
54*bbecb9d1SAndroid Build Coastguard Worker struct vn_command_vkGetPipelineCacheData *args)
55*bbecb9d1SAndroid Build Coastguard Worker {
56*bbecb9d1SAndroid Build Coastguard Worker struct vkr_device *dev = vkr_device_from_handle(args->device);
57*bbecb9d1SAndroid Build Coastguard Worker struct vn_device_proc_table *vk = &dev->proc_table;
58*bbecb9d1SAndroid Build Coastguard Worker
59*bbecb9d1SAndroid Build Coastguard Worker vn_replace_vkGetPipelineCacheData_args_handle(args);
60*bbecb9d1SAndroid Build Coastguard Worker args->ret = vk->GetPipelineCacheData(args->device, args->pipelineCache,
61*bbecb9d1SAndroid Build Coastguard Worker args->pDataSize, args->pData);
62*bbecb9d1SAndroid Build Coastguard Worker }
63*bbecb9d1SAndroid Build Coastguard Worker
64*bbecb9d1SAndroid Build Coastguard Worker static void
vkr_dispatch_vkMergePipelineCaches(UNUSED struct vn_dispatch_context * dispatch,struct vn_command_vkMergePipelineCaches * args)65*bbecb9d1SAndroid Build Coastguard Worker vkr_dispatch_vkMergePipelineCaches(UNUSED struct vn_dispatch_context *dispatch,
66*bbecb9d1SAndroid Build Coastguard Worker struct vn_command_vkMergePipelineCaches *args)
67*bbecb9d1SAndroid Build Coastguard Worker {
68*bbecb9d1SAndroid Build Coastguard Worker struct vkr_device *dev = vkr_device_from_handle(args->device);
69*bbecb9d1SAndroid Build Coastguard Worker struct vn_device_proc_table *vk = &dev->proc_table;
70*bbecb9d1SAndroid Build Coastguard Worker
71*bbecb9d1SAndroid Build Coastguard Worker vn_replace_vkMergePipelineCaches_args_handle(args);
72*bbecb9d1SAndroid Build Coastguard Worker args->ret = vk->MergePipelineCaches(args->device, args->dstCache, args->srcCacheCount,
73*bbecb9d1SAndroid Build Coastguard Worker args->pSrcCaches);
74*bbecb9d1SAndroid Build Coastguard Worker }
75*bbecb9d1SAndroid Build Coastguard Worker
76*bbecb9d1SAndroid Build Coastguard Worker static void
vkr_dispatch_vkCreateGraphicsPipelines(struct vn_dispatch_context * dispatch,struct vn_command_vkCreateGraphicsPipelines * args)77*bbecb9d1SAndroid Build Coastguard Worker vkr_dispatch_vkCreateGraphicsPipelines(struct vn_dispatch_context *dispatch,
78*bbecb9d1SAndroid Build Coastguard Worker struct vn_command_vkCreateGraphicsPipelines *args)
79*bbecb9d1SAndroid Build Coastguard Worker {
80*bbecb9d1SAndroid Build Coastguard Worker struct vkr_context *ctx = dispatch->data;
81*bbecb9d1SAndroid Build Coastguard Worker struct vkr_device *dev = vkr_device_from_handle(args->device);
82*bbecb9d1SAndroid Build Coastguard Worker struct object_array arr;
83*bbecb9d1SAndroid Build Coastguard Worker
84*bbecb9d1SAndroid Build Coastguard Worker if (vkr_graphics_pipeline_create_array(ctx, args, &arr) < VK_SUCCESS)
85*bbecb9d1SAndroid Build Coastguard Worker return;
86*bbecb9d1SAndroid Build Coastguard Worker
87*bbecb9d1SAndroid Build Coastguard Worker vkr_pipeline_add_array(ctx, dev, &arr, args->pPipelines);
88*bbecb9d1SAndroid Build Coastguard Worker }
89*bbecb9d1SAndroid Build Coastguard Worker
90*bbecb9d1SAndroid Build Coastguard Worker static void
vkr_dispatch_vkCreateComputePipelines(struct vn_dispatch_context * dispatch,struct vn_command_vkCreateComputePipelines * args)91*bbecb9d1SAndroid Build Coastguard Worker vkr_dispatch_vkCreateComputePipelines(struct vn_dispatch_context *dispatch,
92*bbecb9d1SAndroid Build Coastguard Worker struct vn_command_vkCreateComputePipelines *args)
93*bbecb9d1SAndroid Build Coastguard Worker {
94*bbecb9d1SAndroid Build Coastguard Worker struct vkr_context *ctx = dispatch->data;
95*bbecb9d1SAndroid Build Coastguard Worker struct vkr_device *dev = vkr_device_from_handle(args->device);
96*bbecb9d1SAndroid Build Coastguard Worker struct object_array arr;
97*bbecb9d1SAndroid Build Coastguard Worker
98*bbecb9d1SAndroid Build Coastguard Worker if (vkr_compute_pipeline_create_array(ctx, args, &arr) < VK_SUCCESS)
99*bbecb9d1SAndroid Build Coastguard Worker return;
100*bbecb9d1SAndroid Build Coastguard Worker
101*bbecb9d1SAndroid Build Coastguard Worker vkr_pipeline_add_array(ctx, dev, &arr, args->pPipelines);
102*bbecb9d1SAndroid Build Coastguard Worker }
103*bbecb9d1SAndroid Build Coastguard Worker
104*bbecb9d1SAndroid Build Coastguard Worker static void
vkr_dispatch_vkDestroyPipeline(struct vn_dispatch_context * dispatch,struct vn_command_vkDestroyPipeline * args)105*bbecb9d1SAndroid Build Coastguard Worker vkr_dispatch_vkDestroyPipeline(struct vn_dispatch_context *dispatch,
106*bbecb9d1SAndroid Build Coastguard Worker struct vn_command_vkDestroyPipeline *args)
107*bbecb9d1SAndroid Build Coastguard Worker {
108*bbecb9d1SAndroid Build Coastguard Worker vkr_pipeline_destroy_and_remove(dispatch->data, args);
109*bbecb9d1SAndroid Build Coastguard Worker }
110*bbecb9d1SAndroid Build Coastguard Worker
111*bbecb9d1SAndroid Build Coastguard Worker void
vkr_context_init_shader_module_dispatch(struct vkr_context * ctx)112*bbecb9d1SAndroid Build Coastguard Worker vkr_context_init_shader_module_dispatch(struct vkr_context *ctx)
113*bbecb9d1SAndroid Build Coastguard Worker {
114*bbecb9d1SAndroid Build Coastguard Worker struct vn_dispatch_context *dispatch = &ctx->dispatch;
115*bbecb9d1SAndroid Build Coastguard Worker
116*bbecb9d1SAndroid Build Coastguard Worker dispatch->dispatch_vkCreateShaderModule = vkr_dispatch_vkCreateShaderModule;
117*bbecb9d1SAndroid Build Coastguard Worker dispatch->dispatch_vkDestroyShaderModule = vkr_dispatch_vkDestroyShaderModule;
118*bbecb9d1SAndroid Build Coastguard Worker }
119*bbecb9d1SAndroid Build Coastguard Worker
120*bbecb9d1SAndroid Build Coastguard Worker void
vkr_context_init_pipeline_layout_dispatch(struct vkr_context * ctx)121*bbecb9d1SAndroid Build Coastguard Worker vkr_context_init_pipeline_layout_dispatch(struct vkr_context *ctx)
122*bbecb9d1SAndroid Build Coastguard Worker {
123*bbecb9d1SAndroid Build Coastguard Worker struct vn_dispatch_context *dispatch = &ctx->dispatch;
124*bbecb9d1SAndroid Build Coastguard Worker
125*bbecb9d1SAndroid Build Coastguard Worker dispatch->dispatch_vkCreatePipelineLayout = vkr_dispatch_vkCreatePipelineLayout;
126*bbecb9d1SAndroid Build Coastguard Worker dispatch->dispatch_vkDestroyPipelineLayout = vkr_dispatch_vkDestroyPipelineLayout;
127*bbecb9d1SAndroid Build Coastguard Worker }
128*bbecb9d1SAndroid Build Coastguard Worker
129*bbecb9d1SAndroid Build Coastguard Worker void
vkr_context_init_pipeline_cache_dispatch(struct vkr_context * ctx)130*bbecb9d1SAndroid Build Coastguard Worker vkr_context_init_pipeline_cache_dispatch(struct vkr_context *ctx)
131*bbecb9d1SAndroid Build Coastguard Worker {
132*bbecb9d1SAndroid Build Coastguard Worker struct vn_dispatch_context *dispatch = &ctx->dispatch;
133*bbecb9d1SAndroid Build Coastguard Worker
134*bbecb9d1SAndroid Build Coastguard Worker dispatch->dispatch_vkCreatePipelineCache = vkr_dispatch_vkCreatePipelineCache;
135*bbecb9d1SAndroid Build Coastguard Worker dispatch->dispatch_vkDestroyPipelineCache = vkr_dispatch_vkDestroyPipelineCache;
136*bbecb9d1SAndroid Build Coastguard Worker dispatch->dispatch_vkGetPipelineCacheData = vkr_dispatch_vkGetPipelineCacheData;
137*bbecb9d1SAndroid Build Coastguard Worker dispatch->dispatch_vkMergePipelineCaches = vkr_dispatch_vkMergePipelineCaches;
138*bbecb9d1SAndroid Build Coastguard Worker }
139*bbecb9d1SAndroid Build Coastguard Worker
140*bbecb9d1SAndroid Build Coastguard Worker void
vkr_context_init_pipeline_dispatch(struct vkr_context * ctx)141*bbecb9d1SAndroid Build Coastguard Worker vkr_context_init_pipeline_dispatch(struct vkr_context *ctx)
142*bbecb9d1SAndroid Build Coastguard Worker {
143*bbecb9d1SAndroid Build Coastguard Worker struct vn_dispatch_context *dispatch = &ctx->dispatch;
144*bbecb9d1SAndroid Build Coastguard Worker
145*bbecb9d1SAndroid Build Coastguard Worker dispatch->dispatch_vkCreateGraphicsPipelines = vkr_dispatch_vkCreateGraphicsPipelines;
146*bbecb9d1SAndroid Build Coastguard Worker dispatch->dispatch_vkCreateComputePipelines = vkr_dispatch_vkCreateComputePipelines;
147*bbecb9d1SAndroid Build Coastguard Worker dispatch->dispatch_vkDestroyPipeline = vkr_dispatch_vkDestroyPipeline;
148*bbecb9d1SAndroid Build Coastguard Worker }
149