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>;
212 void init(std::string shader_path =
"./", EGLDisplay dpy = EGL_NO_DISPLAY, EGLContext ctx = EGL_NO_CONTEXT)
214 _shader_path = std::move(shader_path);
219 eglMakeCurrent(_display, EGL_NO_SURFACE, EGL_NO_SURFACE, _context);
229 _shader_path = shader_path;
241 eglMakeCurrent(dpy, EGL_NO_SURFACE, EGL_NO_SURFACE, ctx);
251 GCKernel create_kernel(
const std::string &shader_name,
const StringSet &build_options_set = {})
const;
263 void setup_dummy_fbo();
272 const std::string preprocess_shader(
const std::string &shader_source)
const;
277 const GCProgram &load_program(
const std::string &program_name)
const;
284 std::string stringify_set(
const StringSet &s)
const;
288 GLuint _frame_buffer;
290 std::string _shader_path;
291 mutable std::map<std::string, const GCProgram> _programs_map;
292 mutable std::map<std::string, const GCKernel> _built_programs_map;
293 static const std::map<std::string, std::string> _shader_program_map;
294 static const std::map<std::string, std::string> _program_source_map;
GCProgram()
Default constructor.
GLuint get_program() const
Get program id.
void set_context(EGLDisplay dpy, EGLContext ctx)
Sets display and context to create kernel.
GLuint compile_shader(const std::string &build_options)
Compile shader.
This file contains all available output stages for GEMMLowp on OpenCL.
void set_shader_params_binding_point(unsigned int binding)
Set shader params binding point.
std::string name() const
Returns program name.
void set_shader_path(const std::string &shader_path)
Sets the path that the shaders reside in.
std::unique_ptr< Kernel > create_kernel()
Helper function to create and return a unique_ptr pointed to a CL/GLES kernel object.
GLuint link_program(GLuint shader)
Link program.
void clear_arguments()
Clear shader arguments.
void init(std::string shader_path="./", EGLDisplay dpy=EGL_NO_DISPLAY, EGLContext ctx=EGL_NO_CONTEXT)
Initialises the kernel library.
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.
std::string name() const
Returns kernel name.