diff --git a/src/panfrost/ci/panfrost-g610-fails.txt b/src/panfrost/ci/panfrost-g610-fails.txt index 166cf610a79..2b7575339b5 100644 --- a/src/panfrost/ci/panfrost-g610-fails.txt +++ b/src/panfrost/ci/panfrost-g610-fails.txt @@ -1391,22 +1391,6 @@ dEQP-VK.spirv_assembly.instruction.graphics.cross_stage.interface_blocks.flat,Fa dEQP-VK.spirv_assembly.instruction.graphics.opquantize.too_small_frag,Fail dEQP-VK.spirv_assembly.instruction.graphics.opquantize.too_small_vert,Fail -dEQP-VK.texture.explicit_lod.2d.sizes.128x128_linear_linear_mipmap_linear_clamp,Crash -dEQP-VK.texture.explicit_lod.2d.sizes.128x128_linear_linear_mipmap_linear_repeat,Crash -dEQP-VK.texture.explicit_lod.2d.sizes.128x128_linear_linear_mipmap_nearest_clamp,Crash -dEQP-VK.texture.explicit_lod.2d.sizes.128x128_linear_linear_mipmap_nearest_repeat,Crash -dEQP-VK.texture.explicit_lod.2d.sizes.128x128_linear_nearest_mipmap_linear_repeat,Crash -dEQP-VK.texture.explicit_lod.2d.sizes.128x128_linear_nearest_mipmap_nearest_clamp,Crash -dEQP-VK.texture.explicit_lod.2d.sizes.128x128_linear_nearest_mipmap_nearest_repeat,Crash -dEQP-VK.texture.explicit_lod.2d.sizes.128x128_nearest_linear_mipmap_linear_clamp,Crash -dEQP-VK.texture.explicit_lod.2d.sizes.128x128_nearest_linear_mipmap_linear_repeat,Crash -dEQP-VK.texture.explicit_lod.2d.sizes.128x128_nearest_linear_mipmap_nearest_clamp,Crash -dEQP-VK.texture.explicit_lod.2d.sizes.128x128_nearest_linear_mipmap_nearest_repeat,Crash -dEQP-VK.texture.explicit_lod.2d.sizes.128x128_nearest_nearest_mipmap_linear_clamp,Crash -dEQP-VK.texture.explicit_lod.2d.sizes.128x128_nearest_nearest_mipmap_linear_repeat,Crash -dEQP-VK.texture.explicit_lod.2d.sizes.128x128_nearest_nearest_mipmap_nearest_clamp,Crash -dEQP-VK.texture.explicit_lod.2d.sizes.128x128_nearest_nearest_mipmap_nearest_repeat,Crash - dEQP-VK.api.command_buffers.record_many_draws_primary_2,Crash dEQP-VK.api.command_buffers.record_many_draws_secondary_2,Crash diff --git a/src/panfrost/vulkan/csf/panvk_vX_cmd_draw.c b/src/panfrost/vulkan/csf/panvk_vX_cmd_draw.c index d36a9a0066a..eb03b08085e 100644 --- a/src/panfrost/vulkan/csf/panvk_vX_cmd_draw.c +++ b/src/panfrost/vulkan/csf/panvk_vX_cmd_draw.c @@ -1897,8 +1897,12 @@ issue_fragment_jobs(struct panvk_cmd_buffer *cmdbuf) struct cs_index cur_tiler = cs_sr_reg64(b, 52); struct cs_index remaining_layers_in_td = cs_sr_reg32(b, 54); struct cs_index src_fbd_ptr = cs_sr_reg64(b, 56); - uint32_t td_count = DIV_ROUND_UP(cmdbuf->state.gfx.render.layer_count, - MAX_LAYERS_PER_TILER_DESC); + + uint32_t td_count = 0; + if (cmdbuf->state.gfx.render.tiler) { + td_count = DIV_ROUND_UP(cmdbuf->state.gfx.render.layer_count, + MAX_LAYERS_PER_TILER_DESC); + } if (copy_fbds) { cs_load64_to( @@ -1991,24 +1995,29 @@ issue_fragment_jobs(struct panvk_cmd_buffer *cmdbuf) cs_match(b, iter_sb, cmp_scratch) { #define CASE(x) \ cs_case(b, x) { \ - if (cmdbuf->state.gfx.render.tiler) { \ + const struct cs_async_op async = \ + cs_defer(SB_WAIT_ITER(x), SB_ID(DEFERRED_SYNC)); \ + if (td_count == 1) { \ + cs_load_to(b, completed, cur_tiler, BITFIELD_MASK(4), 40); \ + cs_wait_slot(b, SB_ID(LS), false); \ + cs_finish_fragment(b, true, completed_top, completed_bottom, async); \ + } else if (td_count > 1) { \ cs_while(b, MALI_CS_CONDITION_GREATER, tiler_count) { \ cs_load_to(b, completed, cur_tiler, BITFIELD_MASK(4), 40); \ cs_wait_slot(b, SB_ID(LS), false); \ - cs_finish_fragment( \ - b, true, completed_top, completed_bottom, \ - cs_defer(SB_WAIT_ITER(x), SB_ID(DEFERRED_SYNC))); \ + cs_finish_fragment(b, false, completed_top, completed_bottom, \ + async); \ cs_add64(b, cur_tiler, cur_tiler, pan_size(TILER_CONTEXT)); \ cs_add32(b, tiler_count, tiler_count, -1); \ } \ + cs_frag_end(b, async); \ } \ if (copy_fbds) { \ cs_sync32_add(b, true, MALI_CS_SYNC_SCOPE_CSG, release_sz, \ - ringbuf_sync_addr, \ - cs_defer(SB_WAIT_ITER(x), SB_ID(DEFERRED_SYNC))); \ + ringbuf_sync_addr, async); \ } \ cs_sync64_add(b, true, MALI_CS_SYNC_SCOPE_CSG, add_val, sync_addr, \ - cs_defer(SB_WAIT_ITER(x), SB_ID(DEFERRED_SYNC))); \ + async); \ cs_move32_to(b, iter_sb, next_iter_sb(x)); \ }