diff --git a/src/panfrost/vulkan/panvk_vX_cs.c b/src/panfrost/vulkan/panvk_vX_cs.c index b270ff6fb7e..0f25b66242f 100644 --- a/src/panfrost/vulkan/panvk_vX_cs.c +++ b/src/panfrost/vulkan/panvk_vX_cs.c @@ -116,7 +116,13 @@ panvk_varying_hw_format(const struct panvk_device *dev, panfrost_get_default_swizzle(4); default: assert(!panvk_varying_is_builtin(stage, loc)); - return pdev->formats[varyings->varying[loc].format].hw; + if (varyings->varying[loc].format != PIPE_FORMAT_NONE) + return pdev->formats[varyings->varying[loc].format].hw; +#if PAN_ARCH >= 7 + return (MALI_CONSTANT << 12) | MALI_RGB_COMPONENT_ORDER_0000; +#else + return (MALI_CONSTANT << 12) | PAN_V6_SWIZZLE(0, 0, 0, 0); +#endif } } diff --git a/src/panfrost/vulkan/panvk_vX_pipeline.c b/src/panfrost/vulkan/panvk_vX_pipeline.c index e7d1dde5fd0..f1bcbc50e80 100644 --- a/src/panfrost/vulkan/panvk_vX_pipeline.c +++ b/src/panfrost/vulkan/panvk_vX_pipeline.c @@ -827,6 +827,9 @@ panvk_pipeline_builder_collect_varyings(struct panvk_pipeline_builder *builder, /* TODO: Xfb */ gl_varying_slot loc; BITSET_FOREACH_SET(loc, pipeline->varyings.active, VARYING_SLOT_MAX) { + if (pipeline->varyings.varying[loc].format == PIPE_FORMAT_NONE) + continue; + enum panvk_varying_buf_id buf_id = panvk_varying_buf_id(false, loc); unsigned buf_idx = panvk_varying_buf_index(&pipeline->varyings, buf_id);