#ifndef RADV_SHADER_H
#define RADV_SHADER_H
+#include "radv_debug.h"
#include "radv_private.h"
#include "nir/nir.h"
unsigned rsrc2;
/* debug only */
+ uint32_t *spirv;
+ uint32_t spirv_size;
struct nir_shader *nir;
char *disasm_string;
char *ptr;
};
+void
+radv_optimize_nir(struct nir_shader *shader);
+
nir_shader *
radv_shader_compile_to_nir(struct radv_device *device,
struct radv_shader_module *module,
struct radv_shader_variant *
radv_shader_variant_create(struct radv_device *device,
struct radv_shader_module *module,
- struct nir_shader *shader,
+ struct nir_shader *const *shaders,
+ int shader_count,
struct radv_pipeline_layout *layout,
const struct ac_shader_variant_key *key,
- void ** code_out,
+ void **code_out,
unsigned *code_size_out);
struct radv_shader_variant *
radv_shader_variant_destroy(struct radv_device *device,
struct radv_shader_variant *variant);
-uint32_t
-radv_shader_stage_to_user_data_0(gl_shader_stage stage, bool has_gs,
- bool has_tess);
-
const char *
radv_get_shader_name(struct radv_shader_variant *var, gl_shader_stage stage);
gl_shader_stage stage,
FILE *file);
+static inline bool
+radv_can_dump_shader(struct radv_device *device,
+ struct radv_shader_module *module)
+{
+ /* Only dump non-meta shaders, useful for debugging purposes. */
+ return device->instance->debug_flags & RADV_DEBUG_DUMP_SHADERS &&
+ module && !module->nir;
+}
+
#endif