radv: rework the checks for implicit exports with GPL

No logical changes but this allows us to distinguish between noop FS
and unknown FS with GPL.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22848>
This commit is contained in:
Samuel Pitoiset 2023-05-12 12:57:30 +02:00 committed by Marge Bot
parent 333c8773a4
commit d91cb1bbfa
2 changed files with 4 additions and 2 deletions

View file

@ -1299,7 +1299,8 @@ radv_should_export_multiview(const struct radv_pipeline_stage *producer,
* (with graphics pipeline library), the layer is exported unconditionally.
*/
return pipeline_key->has_multiview_view_index &&
(!consumer || consumer->stage == MESA_SHADER_FRAGMENT) &&
((consumer && consumer->stage == MESA_SHADER_FRAGMENT) ||
!(pipeline_key->lib_flags & VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT)) &&
!(producer->nir->info.outputs_written & VARYING_BIT_LAYER);
}

View file

@ -1438,7 +1438,8 @@ radv_link_shaders_info(struct radv_device *device,
/* Export primitive ID and clip/cull distances if read by the FS, or export unconditionally when
* the next stage is unknown (with graphics pipeline library).
*/
if (!consumer || consumer->stage == MESA_SHADER_FRAGMENT) {
if ((consumer && consumer->stage == MESA_SHADER_FRAGMENT) ||
!(pipeline_key->lib_flags & VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT)) {
struct radv_vs_output_info *outinfo = &producer->info.outinfo;
const bool ps_prim_id_in = !consumer || consumer->info.ps.prim_id_input;
const bool ps_clip_dists_in = !consumer || !!consumer->info.ps.num_input_clips_culls;