1*61046927SAndroid Build Coastguard Worker /* 2*61046927SAndroid Build Coastguard Worker * Copyright 2019 Google LLC 3*61046927SAndroid Build Coastguard Worker * SPDX-License-Identifier: MIT 4*61046927SAndroid Build Coastguard Worker * 5*61046927SAndroid Build Coastguard Worker * based in part on anv and radv which are: 6*61046927SAndroid Build Coastguard Worker * Copyright © 2015 Intel Corporation 7*61046927SAndroid Build Coastguard Worker * Copyright © 2016 Red Hat. 8*61046927SAndroid Build Coastguard Worker * Copyright © 2016 Bas Nieuwenhuizen 9*61046927SAndroid Build Coastguard Worker */ 10*61046927SAndroid Build Coastguard Worker 11*61046927SAndroid Build Coastguard Worker #ifndef VN_PIPELINE_H 12*61046927SAndroid Build Coastguard Worker #define VN_PIPELINE_H 13*61046927SAndroid Build Coastguard Worker 14*61046927SAndroid Build Coastguard Worker #include "vn_common.h" 15*61046927SAndroid Build Coastguard Worker 16*61046927SAndroid Build Coastguard Worker struct vn_shader_module { 17*61046927SAndroid Build Coastguard Worker struct vn_object_base base; 18*61046927SAndroid Build Coastguard Worker }; 19*61046927SAndroid Build Coastguard Worker VK_DEFINE_NONDISP_HANDLE_CASTS(vn_shader_module, 20*61046927SAndroid Build Coastguard Worker base.base, 21*61046927SAndroid Build Coastguard Worker VkShaderModule, 22*61046927SAndroid Build Coastguard Worker VK_OBJECT_TYPE_SHADER_MODULE) 23*61046927SAndroid Build Coastguard Worker 24*61046927SAndroid Build Coastguard Worker struct vn_pipeline_layout { 25*61046927SAndroid Build Coastguard Worker struct vn_object_base base; 26*61046927SAndroid Build Coastguard Worker 27*61046927SAndroid Build Coastguard Worker struct vn_descriptor_set_layout *push_descriptor_set_layout; 28*61046927SAndroid Build Coastguard Worker bool has_push_constant_ranges; 29*61046927SAndroid Build Coastguard Worker struct vn_refcount refcount; 30*61046927SAndroid Build Coastguard Worker }; 31*61046927SAndroid Build Coastguard Worker VK_DEFINE_NONDISP_HANDLE_CASTS(vn_pipeline_layout, 32*61046927SAndroid Build Coastguard Worker base.base, 33*61046927SAndroid Build Coastguard Worker VkPipelineLayout, 34*61046927SAndroid Build Coastguard Worker VK_OBJECT_TYPE_PIPELINE_LAYOUT) 35*61046927SAndroid Build Coastguard Worker 36*61046927SAndroid Build Coastguard Worker struct vn_pipeline_cache { 37*61046927SAndroid Build Coastguard Worker struct vn_object_base base; 38*61046927SAndroid Build Coastguard Worker }; 39*61046927SAndroid Build Coastguard Worker VK_DEFINE_NONDISP_HANDLE_CASTS(vn_pipeline_cache, 40*61046927SAndroid Build Coastguard Worker base.base, 41*61046927SAndroid Build Coastguard Worker VkPipelineCache, 42*61046927SAndroid Build Coastguard Worker VK_OBJECT_TYPE_PIPELINE_CACHE) 43*61046927SAndroid Build Coastguard Worker 44*61046927SAndroid Build Coastguard Worker enum vn_pipeline_type { 45*61046927SAndroid Build Coastguard Worker VN_PIPELINE_TYPE_GRAPHICS, 46*61046927SAndroid Build Coastguard Worker VN_PIPELINE_TYPE_COMPUTE, 47*61046927SAndroid Build Coastguard Worker }; 48*61046927SAndroid Build Coastguard Worker 49*61046927SAndroid Build Coastguard Worker struct vn_pipeline { 50*61046927SAndroid Build Coastguard Worker struct vn_object_base base; 51*61046927SAndroid Build Coastguard Worker enum vn_pipeline_type type; 52*61046927SAndroid Build Coastguard Worker 53*61046927SAndroid Build Coastguard Worker /** 54*61046927SAndroid Build Coastguard Worker * The VkPipelineLayout provided directly (without linking) at pipeline 55*61046927SAndroid Build Coastguard Worker * creation. Null if none was provided. 56*61046927SAndroid Build Coastguard Worker * 57*61046927SAndroid Build Coastguard Worker * We track the pipeline layout here to extend its and its children's 58*61046927SAndroid Build Coastguard Worker * lifetime, NOT because this is the actual layout used by the pipeline. 59*61046927SAndroid Build Coastguard Worker * 60*61046927SAndroid Build Coastguard Worker * WARNING. This may not be the actual layout used by the pipeline. The 61*61046927SAndroid Build Coastguard Worker * Vulkan 1.3.254 spec says: 62*61046927SAndroid Build Coastguard Worker * 63*61046927SAndroid Build Coastguard Worker * The final effective pipeline layout is effectively the union of the 64*61046927SAndroid Build Coastguard Worker * linked pipeline layouts. When binding descriptor sets for this 65*61046927SAndroid Build Coastguard Worker * pipeline, the pipeline layout used must be compatible with this 66*61046927SAndroid Build Coastguard Worker * union. 67*61046927SAndroid Build Coastguard Worker */ 68*61046927SAndroid Build Coastguard Worker struct vn_pipeline_layout *layout; 69*61046927SAndroid Build Coastguard Worker }; 70*61046927SAndroid Build Coastguard Worker VK_DEFINE_NONDISP_HANDLE_CASTS(vn_pipeline, 71*61046927SAndroid Build Coastguard Worker base.base, 72*61046927SAndroid Build Coastguard Worker VkPipeline, 73*61046927SAndroid Build Coastguard Worker VK_OBJECT_TYPE_PIPELINE) 74*61046927SAndroid Build Coastguard Worker 75*61046927SAndroid Build Coastguard Worker #endif /* VN_PIPELINE_H */ 76