mirror of https://gitlab.freedesktop.org/mesa/mesa
76 lines
2.2 KiB
C
76 lines
2.2 KiB
C
/*
|
|
* Copyright 2019 Google LLC
|
|
* SPDX-License-Identifier: MIT
|
|
*
|
|
* based in part on anv and radv which are:
|
|
* Copyright © 2015 Intel Corporation
|
|
* Copyright © 2016 Red Hat.
|
|
* Copyright © 2016 Bas Nieuwenhuizen
|
|
*/
|
|
|
|
#ifndef VN_PIPELINE_H
|
|
#define VN_PIPELINE_H
|
|
|
|
#include "vn_common.h"
|
|
|
|
struct vn_shader_module {
|
|
struct vn_object_base base;
|
|
};
|
|
VK_DEFINE_NONDISP_HANDLE_CASTS(vn_shader_module,
|
|
base.base,
|
|
VkShaderModule,
|
|
VK_OBJECT_TYPE_SHADER_MODULE)
|
|
|
|
struct vn_pipeline_layout {
|
|
struct vn_object_base base;
|
|
|
|
struct vn_descriptor_set_layout *push_descriptor_set_layout;
|
|
bool has_push_constant_ranges;
|
|
struct vn_refcount refcount;
|
|
};
|
|
VK_DEFINE_NONDISP_HANDLE_CASTS(vn_pipeline_layout,
|
|
base.base,
|
|
VkPipelineLayout,
|
|
VK_OBJECT_TYPE_PIPELINE_LAYOUT)
|
|
|
|
struct vn_pipeline_cache {
|
|
struct vn_object_base base;
|
|
};
|
|
VK_DEFINE_NONDISP_HANDLE_CASTS(vn_pipeline_cache,
|
|
base.base,
|
|
VkPipelineCache,
|
|
VK_OBJECT_TYPE_PIPELINE_CACHE)
|
|
|
|
enum vn_pipeline_type {
|
|
VN_PIPELINE_TYPE_GRAPHICS,
|
|
VN_PIPELINE_TYPE_COMPUTE,
|
|
};
|
|
|
|
struct vn_pipeline {
|
|
struct vn_object_base base;
|
|
enum vn_pipeline_type type;
|
|
|
|
/**
|
|
* The VkPipelineLayout provided directly (without linking) at pipeline
|
|
* creation. Null if none was provided.
|
|
*
|
|
* We track the pipeline layout here to extend its and its children's
|
|
* lifetime, NOT because this is the actual layout used by the pipeline.
|
|
*
|
|
* WARNING. This may not be the actual layout used by the pipeline. The
|
|
* Vulkan 1.3.254 spec says:
|
|
*
|
|
* The final effective pipeline layout is effectively the union of the
|
|
* linked pipeline layouts. When binding descriptor sets for this
|
|
* pipeline, the pipeline layout used must be compatible with this
|
|
* union.
|
|
*/
|
|
struct vn_pipeline_layout *layout;
|
|
};
|
|
VK_DEFINE_NONDISP_HANDLE_CASTS(vn_pipeline,
|
|
base.base,
|
|
VkPipeline,
|
|
VK_OBJECT_TYPE_PIPELINE)
|
|
|
|
#endif /* VN_PIPELINE_H */
|