diff --git a/.pick_status.json b/.pick_status.json index ae6a4f9095d..4f8cb28503b 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -5264,7 +5264,7 @@ "description": "tu: Use HW offset 0 in 3d loads/clears with FDM", "nominated": true, "nomination_type": 2, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": "b34b089ca1327a5d48bc3cfceb9647c44763b52d", "notes": null diff --git a/src/freedreno/vulkan/tu_clear_blit.cc b/src/freedreno/vulkan/tu_clear_blit.cc index d99948690b8..fc0a6e56320 100644 --- a/src/freedreno/vulkan/tu_clear_blit.cc +++ b/src/freedreno/vulkan/tu_clear_blit.cc @@ -4084,8 +4084,10 @@ fdm_apply_sysmem_clear_coords(struct tu_cmd_buffer *cmd, VkExtent2D frag_area = frag_areas[MIN2(state->view, views - 1)]; VkRect2D bin = bins[MIN2(state->view, views - 1)]; - VkOffset2D hw_viewport_offset = - hw_viewport_offsets[MIN2(state->view, views - 1)]; + /* On a7xx, GRAS_BIN_FOVEAT_OFFSET_* is applied per-viewport. We only use + * viewport 0 in the 3d blit so use offset 0. + */ + VkOffset2D hw_viewport_offset = hw_viewport_offsets[0]; VkOffset2D offset = tu_fdm_per_bin_offset(frag_area, bin, common_bin_offset); @@ -5026,8 +5028,10 @@ fdm_apply_load_coords(struct tu_cmd_buffer *cmd, (const struct apply_load_coords_state *)data; VkExtent2D frag_area = frag_areas[MIN2(state->view, views - 1)]; VkRect2D bin = bins[MIN2(state->view, views - 1)]; - VkOffset2D hw_viewport_offset = - hw_viewport_offsets[MIN2(state->view, views - 1)]; + /* On a7xx, GRAS_BIN_FOVEAT_OFFSET_* is applied per-viewport. We only use + * viewport 0 in the 3d blit so use offset 0. + */ + VkOffset2D hw_viewport_offset = hw_viewport_offsets[0]; assert(bin.extent.width % frag_area.width == 0); assert(bin.extent.height % frag_area.height == 0);