| 9011 | }; |
| 9012 | |
| 9013 | class Pipelines : public std::vector<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Pipeline> |
| 9014 | { |
| 9015 | public: |
| 9016 | Pipelines( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device, |
| 9017 | VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::PipelineCache> const & pipelineCache, |
| 9018 | VULKAN_HPP_NAMESPACE::ArrayProxy<VULKAN_HPP_NAMESPACE::ComputePipelineCreateInfo> const & createInfos, |
| 9019 | VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr ) |
| 9020 | { |
| 9021 | VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * dispatcher = device.getDispatcher(); |
| 9022 | std::vector<VkPipeline> pipelines( createInfos.size() ); |
| 9023 | VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>( dispatcher->vkCreateComputePipelines( |
| 9024 | static_cast<VkDevice>( *device ), |
| 9025 | pipelineCache ? static_cast<VkPipelineCache>( **pipelineCache ) : 0, |
| 9026 | createInfos.size(), |
| 9027 | reinterpret_cast<const VkComputePipelineCreateInfo *>( createInfos.data() ), |
| 9028 | reinterpret_cast<const VkAllocationCallbacks *>( static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ), |
| 9029 | pipelines.data() ) ); |
| 9030 | if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) || ( result == VULKAN_HPP_NAMESPACE::Result::ePipelineCompileRequiredEXT ) ) |
| 9031 | { |
| 9032 | this->reserve( createInfos.size() ); |
| 9033 | for ( auto const & pipeline : pipelines ) |
| 9034 | { |
| 9035 | this->emplace_back( device, pipeline, allocator, result ); |
| 9036 | } |
| 9037 | } |
| 9038 | else |
| 9039 | { |
| 9040 | throwResultException( result, "vkCreateComputePipelines" ); |
| 9041 | } |
| 9042 | } |
| 9043 | |
| 9044 | Pipelines( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device, |
| 9045 | VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::PipelineCache> const & pipelineCache, |
| 9046 | VULKAN_HPP_NAMESPACE::ArrayProxy<VULKAN_HPP_NAMESPACE::GraphicsPipelineCreateInfo> const & createInfos, |
| 9047 | VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr ) |
| 9048 | { |
| 9049 | VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * dispatcher = device.getDispatcher(); |
| 9050 | std::vector<VkPipeline> pipelines( createInfos.size() ); |
| 9051 | VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>( dispatcher->vkCreateGraphicsPipelines( |
| 9052 | static_cast<VkDevice>( *device ), |
| 9053 | pipelineCache ? static_cast<VkPipelineCache>( **pipelineCache ) : 0, |
| 9054 | createInfos.size(), |
| 9055 | reinterpret_cast<const VkGraphicsPipelineCreateInfo *>( createInfos.data() ), |
| 9056 | reinterpret_cast<const VkAllocationCallbacks *>( static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ), |
| 9057 | pipelines.data() ) ); |
| 9058 | if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) || ( result == VULKAN_HPP_NAMESPACE::Result::ePipelineCompileRequiredEXT ) ) |
| 9059 | { |
| 9060 | this->reserve( createInfos.size() ); |
| 9061 | for ( auto const & pipeline : pipelines ) |
| 9062 | { |
| 9063 | this->emplace_back( device, pipeline, allocator, result ); |
| 9064 | } |
| 9065 | } |
| 9066 | else |
| 9067 | { |
| 9068 | throwResultException( result, "vkCreateGraphicsPipelines" ); |
| 9069 | } |
| 9070 | } |