30#define DEBUG_LOG_SHADER_SRC_ON_ERROR 0
37#define SOURCES_INDEX_VERSION 0
38#define SOURCES_INDEX_SPECIALIZATION_CONSTANTS 1
105 virtual void uniform_float(
int location,
int comp_len,
int array_size,
const float *data) = 0;
106 virtual void uniform_int(
int location,
int comp_len,
int array_size,
const int *data) = 0;
156 return reinterpret_cast<GPUShader *
>(vert);
160 return reinterpret_cast<Shader *
>(vert);
164 return reinterpret_cast<const Shader *
>(vert);
206 bool is_ready =
false;
242 const char *log_line,
248 const char *error_msg,
249 const char *warning_msg,
250 const char *note_msg)
const;
252 const char *
skip_until(
const char *log_line,
char stop_char)
const;
253 bool at_number(
const char *log_line)
const;
255 int parse_number(
const char *log_line,
const char **r_new_position)
const;
int64_t SpecializationBatchHandle
struct GPUShader GPUShader
int parse_number(const char *log_line, const char **r_new_position) const
const char * skip_separators(const char *log_line, const StringRef separators) const
bool at_number(const char *log_line) const
bool at_any(const char *log_line, const StringRef chars) const
virtual const char * parse_line(const char *source_combined, const char *log_line, GPULogItem &log_item)=0
const char * skip_until(const char *log_line, char stop_char) const
MEM_CXX_CLASS_ALLOC_FUNCS("GPULogParser")
const char * skip_severity(const char *log_line, GPULogItem &log_item, const char *error_msg, const char *warning_msg, const char *note_msg) const
virtual bool batch_is_ready(BatchHandle handle) override
virtual BatchHandle batch_compile(Span< const shader::ShaderCreateInfo * > &infos) override
virtual ~ShaderCompilerGeneric() override
virtual Vector< Shader * > batch_finalize(BatchHandle &handle) override
Shader * compile(const shader::ShaderCreateInfo &info, bool is_batch_compilation)
virtual Vector< Shader * > batch_finalize(BatchHandle &handle)=0
virtual bool specialization_batch_is_ready(SpecializationBatchHandle &handle)
virtual ~ShaderCompiler()
virtual bool batch_is_ready(BatchHandle handle)=0
virtual BatchHandle batch_compile(Span< const shader::ShaderCreateInfo * > &infos)=0
virtual SpecializationBatchHandle precompile_specializations(Span< ShaderSpecialization >)
virtual bool transform_feedback_enable(VertBuf *)=0
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 bool get_uses_ssbo_vertex_fetch() const =0
virtual void init(const shader::ShaderCreateInfo &info, bool is_batch_compilation)=0
virtual void fragment_shader_from_glsl(MutableSpan< const char * > sources)=0
virtual void transform_feedback_disable()=0
virtual std::string compute_layout_declare(const shader::ShaderCreateInfo &info) const =0
Shader * parent_get() const
virtual bool finalize(const shader::ShaderCreateInfo *info=nullptr)=0
virtual std::string resources_declare(const shader::ShaderCreateInfo &info) const =0
const char *const name_get() const
virtual std::string geometry_interface_declare(const shader::ShaderCreateInfo &info) const =0
virtual void vertex_shader_from_glsl(MutableSpan< const char * > sources)=0
void specialization_constants_init(const shader::ShaderCreateInfo &info)
virtual void warm_cache(int limit)=0
void parent_set(Shader *parent)
static bool srgb_uniform_dirty_get()
virtual void compute_shader_from_glsl(MutableSpan< const char * > sources)=0
struct blender::gpu::Shader::Constants constants
virtual std::string vertex_interface_declare(const shader::ShaderCreateInfo &info) const =0
void print_log(Span< const char * > sources, const char *log, const char *stage, bool error, GPULogParser *parser)
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
static void set_framebuffer_srgb_target(int use_srgb_to_linear)
virtual std::string geometry_layout_declare(const shader::ShaderCreateInfo &info) const =0
static void set_srgb_uniform(GPUShader *shader)
virtual int get_ssbo_vertex_fetch_output_num_verts() const =0
GPUShader * immGetShader()
ccl_device_inline float3 log(float3 v)
static void error(const char *str)
static Context * unwrap(GPUContext *ctx)
static GPUContext * wrap(Context *ctx)
void printf_begin(Context *ctx)
void printf_end(Context *ctx)
StringRef file_name_and_error_line
Vector< gpu::shader::Type > types
Describe inputs & outputs, stage interfaces, resources and sources of a shader. If all data is correc...