24 #ifndef ARM_COMPUTE_GCKERNELLIBRARY_H 25 #define ARM_COMPUTE_GCKERNELLIBRARY_H 143 if(idx >= _shader_arguments.size())
145 _shader_arguments.resize(idx + 1, 0);
148 unsigned int *p =
reinterpret_cast<unsigned int *
>(&value);
149 _shader_arguments[idx] = *p;
156 _shader_arguments.clear();
164 _shader_params_binding_point = binding;
169 void update_shader_params();
178 std::vector<unsigned int> _shader_arguments;
179 GLuint _shader_params_ubo_name;
180 GLuint _shader_params_binding_point;
181 GLuint _shader_params_index;
182 GLint _shader_params_size;
183 static constexpr
const char *_shader_params_name =
"shader_params";
189 using StringSet = std::set<std::string>;
211 void init(std::string shader_path =
"./", EGLDisplay dpy = EGL_NO_DISPLAY, EGLContext ctx = EGL_NO_CONTEXT);
216 void set_shader_path(
const std::string &shader_path);
222 void set_context(EGLDisplay dpy, EGLContext ctx);
230 GCKernel create_kernel(
const std::string &shader_name,
const StringSet &build_options_set = {})
const;
236 void setup_dummy_fbo();
245 std::string preprocess_shader(
const std::string &shader_source)
const;
250 const GCProgram &load_program(
const std::string &program_name)
const;
257 std::string stringify_set(
const StringSet &s)
const;
261 GLuint _frame_buffer;
263 std::string _shader_path;
264 mutable std::map<std::string, const GCProgram> _programs_map;
265 mutable std::map<std::string, const GCKernel> _built_programs_map;
266 static const std::map<std::string, std::string> _shader_program_map;
267 static const std::map<std::string, std::string> _program_source_map;
GCProgram()
Default constructor.
GLuint compile_shader(const std::string &build_options)
Compile shader.
std::string name() const
Returns kernel name.
Copyright (c) 2017-2021 Arm Limited.
void set_shader_params_binding_point(unsigned int binding)
Set shader params binding point.
std::string name() const
Returns program name.
cl::Kernel create_kernel(const CLCompileContext &ctx, const std::string &kernel_name, const std::set< std::string > &build_opts=std::set< std::string >())
Creates an opencl kernel using a compile context.
std::set< std::string > build_options
GLuint link_program(GLuint shader)
Link program.
void clear_arguments()
Clear shader arguments.
Wrapper to configure the Khronos EGL and OpenGL ES C header.
GLuint get_program() const
Get program id.
GCProgram & operator=(const GCProgram &)=default
Default copy assignment operator.
void set_argument(unsigned int idx, T value)
Set argument value at index of shader params.