Program Listing for File program.hpp¶
↰ Return to documentation for file (/home/runner/work/Legion-Engine/Legion-Engine/legion/engine/core/compute/program.hpp
)
#pragma once
#include "detail/cl_include.hpp"
#include <core/filesystem/resource.hpp>
#include <core/compute/kernel.hpp>
#include <functional>
#include <string>
#include <Optick/optick.h>
namespace legion::core::compute {
class Program
{
public:
Program(cl_context, cl_device_id, filesystem::basic_resource /*, bool source_is_il = false*/);
Program(const Program& other) = default;
Program(Program&& other) noexcept = default;
Program& operator=(const Program& other) = default;
Program& operator=(Program&& other) noexcept = default;
Kernel kernelContext(const std::string& name);
cl_kernel prewarm(const std::string& name);
cl_command_queue make_cq() const
{
OPTICK_EVENT();
return make_command_queue();
}
static void from_resource(Program* value, const filesystem::basic_resource& resource);
private:
friend filesystem::basic_resource;
template <class T, class C1,class C2,class C3>
friend T filesystem::from_resource(const filesystem::basic_resource& resource);
Program() = default;
std::function<cl_command_queue()> make_command_queue;
cl_program m_program;
std::unordered_map<std::string, cl_kernel> m_kernelCache;
};
}