This is an automated email from the git hooks/post-receive script.

Git pushed a commit to branch master
in repository ffmpeg.

commit e54f60ed1b9565d0a864595d7ae50d04f53e3536
Author:     Lynne <[email protected]>
AuthorDate: Thu Jul 30 19:12:18 2026 +0900
Commit:     Lynne <[email protected]>
CommitDate: Mon Aug 3 10:57:49 2026 +0900

    vulkan: declare maximal reconvergence in shaders doing subgroup reductions
    
    These shaders reduce across the subgroup after divergent control flow
    and implicitly rely on invocations reconverging as written, the
    MaximallyReconvergesKHR execution mode turns that assumption into a
    guarantee.
---
 libavcodec/vulkan/apv_encode_tiles.comp.glsl         | 3 ++-
 libavcodec/vulkan/ffv1_enc_rct_search.comp.glsl      | 3 ++-
 libavcodec/vulkan/prores_ks_estimate_slice.comp.glsl | 3 ++-
 libavcodec/vulkan/prores_ks_trellis_node.comp.glsl   | 3 ++-
 4 files changed, 8 insertions(+), 4 deletions(-)

diff --git a/libavcodec/vulkan/apv_encode_tiles.comp.glsl 
b/libavcodec/vulkan/apv_encode_tiles.comp.glsl
index dd4ba878a0..15ddc8fcbd 100644
--- a/libavcodec/vulkan/apv_encode_tiles.comp.glsl
+++ b/libavcodec/vulkan/apv_encode_tiles.comp.glsl
@@ -24,6 +24,7 @@
 #extension GL_KHR_shader_subgroup_basic : require
 #extension GL_KHR_shader_subgroup_arithmetic : require
 #extension GL_KHR_shader_subgroup_rotate : require
+#extension GL_EXT_maximal_reconvergence : require
 
 #define PB_UNALIGNED
 #include "common.glsl"
@@ -278,7 +279,7 @@ void dc_context(uint coeff_base, uint idx, out int prev_dc, 
out int prev_k_dc)
     prev_k_dc = min(abs(dc_m1 - dc_m2) >> 1, 5);
 }
 
-void main(void)
+void main(void) [[maximally_reconverges]]
 {
     const uint b         = gl_LocalInvocationID.x;
     const uint comp      = comp_base + gl_WorkGroupID.z;
diff --git a/libavcodec/vulkan/ffv1_enc_rct_search.comp.glsl 
b/libavcodec/vulkan/ffv1_enc_rct_search.comp.glsl
index 4c4330f802..85a23de4e2 100644
--- a/libavcodec/vulkan/ffv1_enc_rct_search.comp.glsl
+++ b/libavcodec/vulkan/ffv1_enc_rct_search.comp.glsl
@@ -23,6 +23,7 @@
 #pragma shader_stage(compute)
 #extension GL_GOOGLE_include_directive : require
 #extension GL_KHR_shader_subgroup_arithmetic : require
+#extension GL_EXT_maximal_reconvergence : require
 
 #define ENCODE
 #define SB_QUALI
@@ -165,7 +166,7 @@ void coeff_search(uint slice_idx)
     }
 }
 
-void main(void)
+void main(void) [[maximally_reconverges]]
 {
     if (force_pcm)
         return;
diff --git a/libavcodec/vulkan/prores_ks_estimate_slice.comp.glsl 
b/libavcodec/vulkan/prores_ks_estimate_slice.comp.glsl
index fdaa1c810a..16af85cf83 100644
--- a/libavcodec/vulkan/prores_ks_estimate_slice.comp.glsl
+++ b/libavcodec/vulkan/prores_ks_estimate_slice.comp.glsl
@@ -23,6 +23,7 @@
 #extension GL_EXT_shader_explicit_arithmetic_types : require
 #extension GL_KHR_shader_subgroup_clustered : require
 #extension GL_KHR_shader_subgroup_shuffle : require
+#extension GL_EXT_maximal_reconvergence : require
 #extension GL_GOOGLE_include_directive : require
 
 #include "common.glsl"
@@ -233,7 +234,7 @@ int sum_of_planes(int value)
         return subgroupClusteredAdd(value, 4);
 }
 
-void main()
+void main() [[maximally_reconverges]]
 {
     uint slice = gl_GlobalInvocationID.x / num_planes;
     uint plane = gl_LocalInvocationID.x % num_planes;
diff --git a/libavcodec/vulkan/prores_ks_trellis_node.comp.glsl 
b/libavcodec/vulkan/prores_ks_trellis_node.comp.glsl
index a5e5203e1e..9d8cd1819c 100644
--- a/libavcodec/vulkan/prores_ks_trellis_node.comp.glsl
+++ b/libavcodec/vulkan/prores_ks_trellis_node.comp.glsl
@@ -23,6 +23,7 @@
 #extension GL_EXT_scalar_block_layout : require
 #extension GL_EXT_shader_explicit_arithmetic_types : require
 #extension GL_KHR_shader_subgroup_arithmetic : require
+#extension GL_EXT_maximal_reconvergence : require
 
 layout (local_size_x_id = 253, local_size_y_id = 254, local_size_z_id = 255) 
in;
 
@@ -162,7 +163,7 @@ int force_slice_row_quants()
     return slice_row_size;
 }
 
-void main()
+void main() [[maximally_reconverges]]
 {
     int slice_row_size;
     if (force_quant == 0)

_______________________________________________
ffmpeg-cvslog mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to