X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=src%2Famd%2Fvulkan%2Fradv_shader.h;h=f6486863f88b0a973d1898982034aa69d76d1ff2;hb=258ebe79a0c2133e362035b76f3cf3243880926f;hp=7ad38bf5792739e59625d50fb79fd2338214e470;hpb=a2a350a3be1a4f3dec8cc3264a19eb877d606628;p=mesa.git diff --git a/src/amd/vulkan/radv_shader.h b/src/amd/vulkan/radv_shader.h index 7ad38bf5792..f6486863f88 100644 --- a/src/amd/vulkan/radv_shader.h +++ b/src/amd/vulkan/radv_shader.h @@ -28,6 +28,7 @@ #ifndef RADV_SHADER_H #define RADV_SHADER_H +#include "radv_debug.h" #include "radv_private.h" #include "nir/nir.h" @@ -51,6 +52,8 @@ struct radv_shader_variant { unsigned rsrc2; /* debug only */ + uint32_t *spirv; + uint32_t spirv_size; struct nir_shader *nir; char *disasm_string; @@ -65,6 +68,9 @@ struct radv_shader_slab { 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, @@ -82,10 +88,11 @@ radv_destroy_shader_slabs(struct radv_device *device); 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 * @@ -97,10 +104,6 @@ void 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); @@ -110,4 +113,13 @@ radv_shader_dump_stats(struct radv_device *device, 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