[Mesa-dev] [PATCH] radv: do not dump meta shaders with RADV_DEBUG=shaders

James Legg jlegg at feralinteractive.com
Mon Dec 4 10:31:12 UTC 2017


Hi Samuel,

On Thu, 2017-11-30 at 22:16 +0100, Samuel Pitoiset wrote:
> It's really annoying and this pollutes the output especially
> when a bunch of non-meta shaders are compiled.

> diff --git a/src/amd/vulkan/radv_shader.c b/src/amd/vulkan/radv_shader.c
> index 32edf2abd2..5464d3a58e 100644
> --- a/src/amd/vulkan/radv_shader.c
> +++ b/src/amd/vulkan/radv_shader.c
> @@ -429,7 +429,7 @@ shader_variant_create(struct radv_device *device,
>  		      unsigned *code_size_out)
>  {
>  	enum radeon_family chip_family = device->physical_device->rad_info.family;
> -	bool dump_shaders = device->instance->debug_flags & RADV_DEBUG_DUMP_SHADERS;
> +	bool dump_shaders = radv_can_dump_shader(device, module);
>  	enum ac_target_machine_options tm_options = 0;
>  	struct radv_shader_variant *variant;
>  	struct ac_shader_binary binary;

This shader_variant_create function is called with NULL for the module
parameter in radv_create_gs_copy_shader.

> diff --git a/src/amd/vulkan/radv_shader.h b/src/amd/vulkan/radv_shader.h
> index 9bdbe848c8..91f2e7f2a1 100644
> --- a/src/amd/vulkan/radv_shader.h
> +++ b/src/amd/vulkan/radv_shader.h
> @@ -112,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 !module->nir &&
> +	       device->instance->debug_flags & RADV_DEBUG_DUMP_SHADERS;
> +}
> +
>  #endif

Consequently, there is a NULL dereference here if
radv_create_gs_copy_shader is used.

James


More information about the mesa-dev mailing list