55 virtual void uniform_float(
int location,
int comp_len,
int array_size,
const float *
data) = 0;
56 virtual void uniform_int(
int location,
int comp_len,
int array_size,
const int *
data) = 0;
84 return reinterpret_cast<GPUShader *
>(vert);
88 return reinterpret_cast<Shader *
>(vert);
92 return reinterpret_cast<const Shader *
>(vert);
120 const char *error_msg,
121 const char *warning_msg)
const;
123 char *
skip_until(
char *log_line,
char stop_char)
const;
124 bool at_number(
const char *log_line)
const;
126 int parse_number(
const char *log_line,
char **r_new_position)
const;
struct GPUShader GPUShader
struct GPUVertBuf GPUVertBuf
char * skip_separators(char *log_line, const StringRef separators) const
char * skip_severity(char *log_line, GPULogItem &log_item, const char *error_msg, const char *warning_msg) const
virtual char * parse_line(char *log_line, GPULogItem &log_item)=0
bool at_number(const char *log_line) const
int parse_number(const char *log_line, char **r_new_position) const
bool at_any(const char *log_line, const StringRef chars) const
char * skip_until(char *log_line, char stop_char) const
MEM_CXX_CLASS_ALLOC_FUNCS("GPULogParser")
virtual std::string fragment_interface_declare(const shader::ShaderCreateInfo &info) const =0
virtual void transform_feedback_names_set(Span< const char * > name_list, eGPUShaderTFBType geom_type)=0
virtual void uniform_int(int location, int comp_len, int array_size, const int *data)=0
std::string defines_declare(const shader::ShaderCreateInfo &info) const
virtual void fragment_shader_from_glsl(MutableSpan< const char * > sources)=0
void print_log(Span< const char * > sources, char *log, const char *stage, bool error, GPULogParser *parser)
const char *const name_get() const
virtual void transform_feedback_disable()=0
virtual bool transform_feedback_enable(GPUVertBuf *)=0
virtual std::string compute_layout_declare(const shader::ShaderCreateInfo &info) const =0
virtual bool finalize(const shader::ShaderCreateInfo *info=nullptr)=0
virtual std::string resources_declare(const shader::ShaderCreateInfo &info) const =0
virtual std::string geometry_interface_declare(const shader::ShaderCreateInfo &info) const =0
virtual void vertex_shader_from_glsl(MutableSpan< const char * > sources)=0
virtual void vertformat_from_shader(GPUVertFormat *) const =0
virtual void compute_shader_from_glsl(MutableSpan< const char * > sources)=0
virtual std::string vertex_interface_declare(const shader::ShaderCreateInfo &info) const =0
virtual void geometry_shader_from_glsl(MutableSpan< const char * > sources)=0
virtual int program_handle_get() const =0
virtual void uniform_float(int location, int comp_len, int array_size, const float *data)=0
virtual std::string geometry_layout_declare(const shader::ShaderCreateInfo &info) const =0
GPUShader * immGetShader()
ccl_device_inline float3 log(float3 v)
static void error(const char *str)
static GPUContext * wrap(Context *ctx)
static Context * unwrap(GPUContext *ctx)
Describe inputs & outputs, stage interfaces, resources and sources of a shader. If all data is correc...