mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-07 04:58:05 +02:00
pvr: record deferred RTA clears for secondary cmdbuf subcmds
Currently the code handling deferred RTA clears cannot handle them for secondary command buffers within render passes, because the code immediately configures the transfer command for the deferred clear operation, but the specific attachment image view isn't known when recording secondary command buffers to be executed inside render passes. Add code to record parameters for deferred RTA clears in secondary command buffers when the attachment is unknown, and bind the recorded clears to the attachment's image view when executing the secondary command buffer inside a render pass. Fixes many dynamic rendering random tests. Backport-to: 26.0 Signed-off-by: Icenowy Zheng <zhengxingda@iscas.ac.cn> Reviewed-by: Luigi Santivetti <luigi.santivetti@imgtec.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/40838>
This commit is contained in:
parent
ecd4e93456
commit
9960637b26
5 changed files with 162 additions and 144 deletions
|
|
@ -19,195 +19,112 @@ dEQP-VK.pipeline.monolithic.stencil.no_stencil_att.dynamic_rendering.dynamic_ena
|
|||
dEQP-VK.pipeline.monolithic.stencil.no_stencil_att.dynamic_rendering.static_enable.d24_unorm_s8_uint,Fail
|
||||
dEQP-VK.pipeline.monolithic.stencil.no_stencil_att.dynamic_rendering.static_enable.d32_sfloat_s8_uint,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.basic.partial_binding_depth_stencil,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed0,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed0_multiview,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed1,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed10,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed10_multiview,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed11,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed11_multiview,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed12,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed12_multiview,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed13,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed13_multiview,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed14,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed14_multiview,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed15,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed15_multiview,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed16,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed16_multiview,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed17,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed17_multiview,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed18,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed18_multiview,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed19,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed19_multiview,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed1_multiview,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed2,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed20,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed20_multiview,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed21,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed21_multiview,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed22,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed22_multiview,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed23,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed23_multiview,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed24,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed24_multiview,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed25,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed26,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed26_multiview,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed27,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed27_multiview,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed28,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed28_multiview,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed29,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed29_multiview,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed2_multiview,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed3,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed30_multiview,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed31,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed31_multiview,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed32,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed32_multiview,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed33,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed33_multiview,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed34,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed34_multiview,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed35,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed35_multiview,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed36,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed36_multiview,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed37,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed37_multiview,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed38,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed38_multiview,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed39,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed39_multiview,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed3_multiview,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed4,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed40_multiview,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed41,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed41_multiview,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed42,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed42_multiview,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed43,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed43_multiview,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed44,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed44_multiview,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed45,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed45_multiview,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed46,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed46_multiview,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed47,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed47_multiview,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed48,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed48_multiview,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed49,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed49_multiview,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed4_multiview,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed5,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed50,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed50_multiview,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed51,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed51_multiview,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed52_multiview,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed53,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed53_multiview,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed54,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed54_multiview,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed55,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed55_multiview,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed56,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed56_multiview,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed57,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed57_multiview,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed58,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed58_multiview,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed59,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed59_multiview,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed5_multiview,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed60,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed60_multiview,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed61,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed61_multiview,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed62,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed62_multiview,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed63,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed63_multiview,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed64,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed64_multiview,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed65,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed65_multiview,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed66,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed66_multiview,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed67,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed67_multiview,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed68,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed68_multiview,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed69,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed69_multiview,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed6_multiview,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed7,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed70,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed70_multiview,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed71,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed71_multiview,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed72,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed72_multiview,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed73,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed73_multiview,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed74,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed74_multiview,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed75,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed75_multiview,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed76,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed76_multiview,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed77,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed77_multiview,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed78,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed78_multiview,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed79,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed79_multiview,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed7_multiview,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed8,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed80,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed80_multiview,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed81,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed81_multiview,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed82_multiview,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed83,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed83_multiview,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed84_multiview,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed85,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed85_multiview,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed86,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed86_multiview,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed87,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed87_multiview,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed88,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed88_multiview,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed89,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed89_multiview,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed8_multiview,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed9,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed90,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed90_multiview,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed91,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed91_multiview,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed92,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed92_multiview,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed93_multiview,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed94,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed94_multiview,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed95,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed95_multiview,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed96,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed96_multiview,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed97,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed97_multiview,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed98,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed98_multiview,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed99,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed99_multiview,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed9_multiview,Fail
|
||||
|
|
|
|||
|
|
@ -136,6 +136,7 @@ static void pvr_cmd_buffer_free_sub_cmd(struct pvr_cmd_buffer *cmd_buffer,
|
|||
VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT);
|
||||
|
||||
util_dynarray_fini(&sub_cmd->gfx.sec_query_indices);
|
||||
util_dynarray_fini(&sub_cmd->gfx.unbound_deferred_clears);
|
||||
pvr_csb_finish(&sub_cmd->gfx.control_stream);
|
||||
pvr_bo_free(cmd_buffer->device, sub_cmd->gfx.terminate_ctrl_stream);
|
||||
pvr_bo_free(cmd_buffer->device, sub_cmd->gfx.multiview_ctrl_stream);
|
||||
|
|
@ -2753,6 +2754,7 @@ VkResult pvr_arch_cmd_buffer_start_sub_cmd(struct pvr_cmd_buffer *cmd_buffer,
|
|||
}
|
||||
|
||||
sub_cmd->gfx.sec_query_indices = UTIL_DYNARRAY_INIT;
|
||||
sub_cmd->gfx.unbound_deferred_clears = UTIL_DYNARRAY_INIT;
|
||||
break;
|
||||
|
||||
case PVR_SUB_CMD_TYPE_QUERY:
|
||||
|
|
@ -9036,6 +9038,17 @@ pvr_execute_graphics_cmd_buffer(struct pvr_cmd_buffer *cmd_buffer,
|
|||
&sec_sub_cmd->gfx.sec_query_indices);
|
||||
}
|
||||
|
||||
if (!PVR_HAS_FEATURE(dev_info, gs_rta_support)) {
|
||||
util_dynarray_foreach (&sec_sub_cmd->gfx.unbound_deferred_clears,
|
||||
struct pvr_unbound_deferred_clear,
|
||||
recorded_clear) {
|
||||
result =
|
||||
pvr_bind_unbound_deferred_clear(cmd_buffer, recorded_clear);
|
||||
if (result != VK_SUCCESS)
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
if (pvr_cmd_uses_deferred_cs_cmds(sec_cmd_buffer)) {
|
||||
/* TODO: In case if secondary buffer is created with
|
||||
* VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT, then we patch the
|
||||
|
|
|
|||
|
|
@ -34,6 +34,7 @@ struct pvr_device;
|
|||
struct pvr_image;
|
||||
struct pvr_transfer_cmd;
|
||||
struct pvr_transfer_cmd_surface;
|
||||
struct pvr_unbound_deferred_clear;
|
||||
|
||||
VkFormat pvr_get_raw_copy_format(VkFormat format);
|
||||
|
||||
|
|
@ -80,4 +81,8 @@ void pvr_clear_depth_stencil_image(struct pvr_cmd_buffer *cmd_buffer,
|
|||
uint32_t rangeCount,
|
||||
const VkImageSubresourceRange *pRanges);
|
||||
|
||||
VkResult pvr_bind_unbound_deferred_clear(
|
||||
struct pvr_cmd_buffer *cmd_buffer,
|
||||
struct pvr_unbound_deferred_clear *recorded_clear);
|
||||
|
||||
#endif /* PVR_BLIT_H */
|
||||
|
|
|
|||
|
|
@ -114,6 +114,15 @@ struct pvr_transfer_cmd {
|
|||
struct pvr_cmd_buffer *cmd_buffer;
|
||||
};
|
||||
|
||||
struct pvr_unbound_deferred_clear {
|
||||
union fi clear_color[4];
|
||||
VkOffset3D offset;
|
||||
VkExtent3D extent;
|
||||
uint32_t array_layer;
|
||||
VkImageAspectFlags aspect_mask;
|
||||
uint32_t attachment_index;
|
||||
};
|
||||
|
||||
struct pvr_color_attachment_output_map {
|
||||
uint32_t index_color;
|
||||
uint32_t index_resolve;
|
||||
|
|
@ -208,6 +217,9 @@ struct pvr_sub_cmd_gfx {
|
|||
|
||||
uint32_t view_mask;
|
||||
bool multiview_enabled;
|
||||
|
||||
/* Recorded deferred RTA clears for secondary command buffers */
|
||||
struct util_dynarray unbound_deferred_clears;
|
||||
};
|
||||
|
||||
struct pvr_sub_cmd_compute {
|
||||
|
|
|
|||
|
|
@ -45,6 +45,7 @@
|
|||
#include "util/bitscan.h"
|
||||
#include "util/list.h"
|
||||
#include "util/macros.h"
|
||||
#include "util/u_dynarray.h"
|
||||
#include "util/u_math.h"
|
||||
#include "vk_alloc.h"
|
||||
#include "vk_command_buffer.h"
|
||||
|
|
@ -1936,8 +1937,9 @@ static VkResult pvr_add_deferred_rta_clear(struct pvr_cmd_buffer *cmd_buffer,
|
|||
struct pvr_sub_cmd_gfx *sub_cmd = &cmd_buffer->state.current_sub_cmd->gfx;
|
||||
const struct pvr_renderpass_hwsetup_render *hw_render =
|
||||
pvr_arch_pass_info_get_hw_render(pass_info, sub_cmd->hw_render_idx);
|
||||
const struct pvr_image_view *image_view;
|
||||
const struct pvr_image *image;
|
||||
const struct pvr_image_view *image_view = NULL;
|
||||
const struct pvr_image *image = NULL;
|
||||
uint32_t attachment_index;
|
||||
|
||||
const VkOffset3D offset = {
|
||||
.x = rect->rect.offset.x,
|
||||
|
|
@ -1965,82 +1967,157 @@ static VkResult pvr_add_deferred_rta_clear(struct pvr_cmd_buffer *cmd_buffer,
|
|||
attachment->aspectMask ==
|
||||
(VK_IMAGE_ASPECT_DEPTH_BIT | VK_IMAGE_ASPECT_STENCIL_BIT));
|
||||
|
||||
image_view = pass_info->attachments[hw_render->ds_attach_idx];
|
||||
attachment_index = hw_render->ds_attach_idx;
|
||||
} else if (is_render_init) {
|
||||
uint32_t index;
|
||||
|
||||
assert(attachment->colorAttachment < hw_render->color_init_count);
|
||||
index = hw_render->color_init[attachment->colorAttachment].index;
|
||||
|
||||
image_view = pass_info->attachments[index];
|
||||
attachment_index =
|
||||
hw_render->color_init[attachment->colorAttachment].index;
|
||||
} else if (cmd_buffer->state.current_sub_cmd->is_dynamic_render) {
|
||||
const struct pvr_dynamic_render_info *dr_info = pass_info->dr_info;
|
||||
const uint32_t index =
|
||||
attachment_index =
|
||||
dr_info->color_attachments[attachment->colorAttachment].index_color;
|
||||
|
||||
image_view = pass_info->attachments[index];
|
||||
} else {
|
||||
const struct pvr_renderpass_hwsetup_subpass *hw_pass =
|
||||
pvr_arch_get_hw_subpass(pass_info->pass, pass_info->subpass_idx);
|
||||
const struct pvr_render_subpass *sub_pass =
|
||||
&pass_info->pass->subpasses[hw_pass->index];
|
||||
const uint32_t attachment_idx =
|
||||
attachment_index =
|
||||
sub_pass->color_attachments[attachment->colorAttachment];
|
||||
|
||||
assert(attachment->colorAttachment < sub_pass->color_count);
|
||||
|
||||
image_view = pass_info->attachments[attachment_idx];
|
||||
}
|
||||
|
||||
image = vk_to_pvr_image(image_view->vk.image);
|
||||
if (pass_info->attachments) {
|
||||
image_view = pass_info->attachments[attachment_index];
|
||||
image = vk_to_pvr_image(image_view->vk.image);
|
||||
} else {
|
||||
assert(cmd_buffer->vk.level == VK_COMMAND_BUFFER_LEVEL_SECONDARY &&
|
||||
(cmd_buffer->usage_flags &
|
||||
VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT));
|
||||
}
|
||||
|
||||
for (uint32_t i = 0; i < rect->layerCount; i++) {
|
||||
struct pvr_transfer_cmd *transfer_cmd;
|
||||
uint32_t rt_id = rect->baseArrayLayer + i;
|
||||
float depth = 0.0f;
|
||||
uint32_t layer = 0;
|
||||
|
||||
/* Do not defer the clear of active render target */
|
||||
if (hw_render->view_mask & (1 << rt_id))
|
||||
continue;
|
||||
|
||||
transfer_cmd = pvr_transfer_cmd_alloc(cmd_buffer);
|
||||
if (!transfer_cmd)
|
||||
return VK_ERROR_OUT_OF_HOST_MEMORY;
|
||||
if (pass_info->attachments) {
|
||||
struct pvr_transfer_cmd *transfer_cmd;
|
||||
float depth = 0.0f;
|
||||
uint32_t layer = 0;
|
||||
|
||||
list_addtail(&transfer_cmd->link, &cmd_buffer->deferred_clears);
|
||||
transfer_cmd = pvr_transfer_cmd_alloc(cmd_buffer);
|
||||
if (!transfer_cmd)
|
||||
return VK_ERROR_OUT_OF_HOST_MEMORY;
|
||||
|
||||
transfer_cmd->flags = PVR_TRANSFER_CMD_FLAGS_FILL;
|
||||
list_addtail(&transfer_cmd->link, &cmd_buffer->deferred_clears);
|
||||
|
||||
if (attachment->aspectMask == VK_IMAGE_ASPECT_COLOR_BIT) {
|
||||
for (uint32_t j = 0; j < ARRAY_SIZE(transfer_cmd->clear_color); j++) {
|
||||
transfer_cmd->clear_color[j].ui =
|
||||
attachment->clearValue.color.uint32[j];
|
||||
transfer_cmd->flags = PVR_TRANSFER_CMD_FLAGS_FILL;
|
||||
|
||||
if (attachment->aspectMask == VK_IMAGE_ASPECT_COLOR_BIT) {
|
||||
for (uint32_t j = 0; j < ARRAY_SIZE(transfer_cmd->clear_color);
|
||||
j++) {
|
||||
transfer_cmd->clear_color[j].ui =
|
||||
attachment->clearValue.color.uint32[j];
|
||||
}
|
||||
} else {
|
||||
transfer_cmd->clear_color[0].f =
|
||||
attachment->clearValue.depthStencil.depth;
|
||||
transfer_cmd->clear_color[1].ui =
|
||||
attachment->clearValue.depthStencil.stencil;
|
||||
}
|
||||
} else {
|
||||
transfer_cmd->clear_color[0].f =
|
||||
attachment->clearValue.depthStencil.depth;
|
||||
transfer_cmd->clear_color[1].ui =
|
||||
attachment->clearValue.depthStencil.stencil;
|
||||
}
|
||||
|
||||
pvr_set_rta_clear_layer_depth(image_view, rt_id, &layer, &depth);
|
||||
pvr_setup_transfer_surface(cmd_buffer->device,
|
||||
&transfer_cmd->dst,
|
||||
&transfer_cmd->scissor,
|
||||
image,
|
||||
layer,
|
||||
0,
|
||||
&offset,
|
||||
&extent,
|
||||
depth,
|
||||
image->vk.format,
|
||||
attachment->aspectMask);
|
||||
pvr_set_rta_clear_layer_depth(image_view, rt_id, &layer, &depth);
|
||||
pvr_setup_transfer_surface(cmd_buffer->device,
|
||||
&transfer_cmd->dst,
|
||||
&transfer_cmd->scissor,
|
||||
image,
|
||||
layer,
|
||||
0,
|
||||
&offset,
|
||||
&extent,
|
||||
depth,
|
||||
image->vk.format,
|
||||
attachment->aspectMask);
|
||||
} else {
|
||||
struct pvr_unbound_deferred_clear recorded_clear;
|
||||
|
||||
if (attachment->aspectMask == VK_IMAGE_ASPECT_COLOR_BIT) {
|
||||
for (uint32_t j = 0; j < ARRAY_SIZE(recorded_clear.clear_color);
|
||||
j++) {
|
||||
recorded_clear.clear_color[j].ui =
|
||||
attachment->clearValue.color.uint32[j];
|
||||
}
|
||||
} else {
|
||||
recorded_clear.clear_color[0].f =
|
||||
attachment->clearValue.depthStencil.depth;
|
||||
recorded_clear.clear_color[1].ui =
|
||||
attachment->clearValue.depthStencil.stencil;
|
||||
}
|
||||
|
||||
recorded_clear.extent = extent;
|
||||
recorded_clear.offset = offset;
|
||||
recorded_clear.array_layer = rt_id;
|
||||
recorded_clear.aspect_mask = attachment->aspectMask;
|
||||
recorded_clear.attachment_index = attachment_index;
|
||||
|
||||
util_dynarray_append(&sub_cmd->unbound_deferred_clears,
|
||||
recorded_clear);
|
||||
}
|
||||
}
|
||||
|
||||
return VK_SUCCESS;
|
||||
}
|
||||
|
||||
VkResult pvr_bind_unbound_deferred_clear(
|
||||
struct pvr_cmd_buffer *cmd_buffer,
|
||||
struct pvr_unbound_deferred_clear *recorded_clear)
|
||||
{
|
||||
struct pvr_render_pass_info *pass_info = &cmd_buffer->state.render_pass_info;
|
||||
const struct pvr_image_view *image_view;
|
||||
struct pvr_transfer_cmd *transfer_cmd;
|
||||
const struct pvr_image *image;
|
||||
float depth = 0.0f;
|
||||
uint32_t layer = 0;
|
||||
|
||||
image_view = pass_info->attachments[recorded_clear->attachment_index];
|
||||
image = vk_to_pvr_image(image_view->vk.image);
|
||||
|
||||
transfer_cmd = pvr_transfer_cmd_alloc(cmd_buffer);
|
||||
if (!transfer_cmd)
|
||||
return VK_ERROR_OUT_OF_HOST_MEMORY;
|
||||
|
||||
list_addtail(&transfer_cmd->link, &cmd_buffer->deferred_clears);
|
||||
|
||||
transfer_cmd->flags = PVR_TRANSFER_CMD_FLAGS_FILL;
|
||||
|
||||
if (recorded_clear->aspect_mask == VK_IMAGE_ASPECT_COLOR_BIT) {
|
||||
for (uint32_t i = 0; i < ARRAY_SIZE(transfer_cmd->clear_color); i++)
|
||||
transfer_cmd->clear_color[i].ui = recorded_clear->clear_color[i].ui;
|
||||
} else {
|
||||
transfer_cmd->clear_color[0].f = recorded_clear->clear_color[0].f;
|
||||
transfer_cmd->clear_color[1].ui = recorded_clear->clear_color[1].ui;
|
||||
}
|
||||
|
||||
pvr_set_rta_clear_layer_depth(image_view,
|
||||
recorded_clear->array_layer,
|
||||
&layer,
|
||||
&depth);
|
||||
pvr_setup_transfer_surface(cmd_buffer->device,
|
||||
&transfer_cmd->dst,
|
||||
&transfer_cmd->scissor,
|
||||
image,
|
||||
layer,
|
||||
0,
|
||||
&recorded_clear->offset,
|
||||
&recorded_clear->extent,
|
||||
depth,
|
||||
image->vk.format,
|
||||
recorded_clear->aspect_mask);
|
||||
|
||||
return VK_SUCCESS;
|
||||
}
|
||||
|
||||
static void pvr_clear_attachments(struct pvr_cmd_buffer *cmd_buffer,
|
||||
uint32_t attachment_count,
|
||||
const VkClearAttachment *attachments,
|
||||
|
|
@ -2279,21 +2356,15 @@ static void pvr_clear_attachments(struct pvr_cmd_buffer *cmd_buffer,
|
|||
|
||||
if (!PVR_HAS_FEATURE(dev_info, gs_rta_support) &&
|
||||
(clear_rect->baseArrayLayer != 0 || clear_rect->layerCount > 1)) {
|
||||
if (pass_info->attachments) {
|
||||
result = pvr_add_deferred_rta_clear(cmd_buffer,
|
||||
attachment,
|
||||
clear_rect,
|
||||
is_render_init);
|
||||
if (result != VK_SUCCESS)
|
||||
return;
|
||||
result = pvr_add_deferred_rta_clear(cmd_buffer,
|
||||
attachment,
|
||||
clear_rect,
|
||||
is_render_init);
|
||||
if (result != VK_SUCCESS)
|
||||
return;
|
||||
|
||||
if (clear_rect->baseArrayLayer != 0)
|
||||
continue;
|
||||
|
||||
} else {
|
||||
pvr_finishme(
|
||||
"incomplete support for deferred (emulated) RTA clears");
|
||||
}
|
||||
if (clear_rect->baseArrayLayer != 0)
|
||||
continue;
|
||||
}
|
||||
|
||||
/* TODO: Allocate all the buffers in one go before the loop, and add
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue