20template<
typename LayoutT>
39template<
typename LayoutT>
65template<
typename LayoutT>
84 storage_type_ = storage_type;
88 descriptor_set_location_ = location;
108 std::ostream &stream = std::cout;
109 stream <<
"VKPushConstants::Layout::debug_print()\n";
127 other.data_ =
nullptr;
132 if (data_ !=
nullptr) {
140 layout_ = other.layout_;
143 other.data_ =
nullptr;
154 uniform_buffer->update(data_);
166 return std::make_unique<VKUniformBuffer>(layout_->
size_in_bytes(), __func__);
void append(const T &value)
const ShaderInput * uniform_get(const char *name) const
const VkPhysicalDeviceProperties & physical_device_properties_get() const
void update_uniform_buffer()
VKPushConstants & operator=(VKPushConstants &&other)
std::unique_ptr< VKUniformBuffer > create_resource(VKContext &context) override
std::unique_ptr< VKUniformBuffer > & uniform_buffer_get()
virtual ~VKPushConstants()
std::unique_ptr< VKUniformBuffer > & tracked_resource_for(VKContext &context, const bool is_dirty)
std::unique_ptr< VKUniformBuffer > & active_resource()
output_img push_constant(Type::FLOAT, "subtrahend") .define("TYPE"
void *(* MEM_mallocN)(size_t len, const char *str)
void MEM_freeN(void *vmemh)
void init_struct(const shader::ShaderCreateInfo &info, const VKShaderInterface &interface, Vector< VKPushConstants::Layout::PushConstant > &r_struct, uint32_t *r_offset)
static void reserve(const shader::Type type, int32_t array_size, uint32_t *r_offset)
uint32_t struct_size(Span< shader::ShaderCreateInfo::PushConst > push_constants)
static VKPushConstants::Layout::PushConstant init_constant(const shader::ShaderCreateInfo::PushConst &push_constant, const ShaderInput &shader_input, uint32_t *r_offset)
static void align_end_of_struct(uint32_t *r_offset)
static void align(const shader::Type &type, const int32_t array_size, uint32_t *r_offset)
static constexpr StorageType STORAGE_TYPE_DEFAULT
static constexpr StorageType STORAGE_TYPE_FALLBACK
uint32_t size_in_bytes() const
static StorageType determine_storage_type(const shader::ShaderCreateInfo &info, const VKDevice &device)
const PushConstant * find(int32_t location) const
void init(const shader::ShaderCreateInfo &info, const VKShaderInterface &interface, StorageType storage_type, VKDescriptorSet::Location location)
StorageType storage_type_get() const
Describe inputs & outputs, stage interfaces, resources and sources of a shader. If all data is correc...
Vector< PushConst > push_constants_