diff --git a/src/imagination/common/device_info/bxs-4-64.h b/src/imagination/common/device_info/bxs-4-64.h index 6ea136bf8ba..1ec45fcc5f6 100644 --- a/src/imagination/common/device_info/bxs-4-64.h +++ b/src/imagination/common/device_info/bxs-4-64.h @@ -121,6 +121,7 @@ static const struct pvr_device_quirks pvr_device_quirks_36_53_104_796 = { .has_brn44079 = true, .has_brn70165 = true, .has_brn72168 = true, + .has_brn72463 = true, }; static const struct pvr_device_info pvr_device_info_36_53_104_796 = { diff --git a/src/imagination/common/pvr_device_info.h b/src/imagination/common/pvr_device_info.h index ce1a80fc13e..432d60b43c8 100644 --- a/src/imagination/common/pvr_device_info.h +++ b/src/imagination/common/pvr_device_info.h @@ -364,6 +364,7 @@ struct pvr_device_quirks { bool has_brn66011 : 1; bool has_brn70165 : 1; bool has_brn72168 : 1; + bool has_brn72463 : 1; }; struct pvr_device_info { diff --git a/src/imagination/vulkan/pvr_job_render.c b/src/imagination/vulkan/pvr_job_render.c index e683ace50ae..6671cf64061 100644 --- a/src/imagination/vulkan/pvr_job_render.c +++ b/src/imagination/vulkan/pvr_job_render.c @@ -1363,6 +1363,16 @@ static void pvr_frag_state_stream_init(struct pvr_render_ctx *ctx, value.skip_init_hdrs = false; } } + + if (PVR_HAS_QUIRK(dev_info, 72463)) { + /* We cannot set SKIP_INIT_HDRS if the number of tile group rows is + * <= 2 AND the width is <= 2 tiles. + */ + if ((((tiling_info.y_tile_max + 1) / 2) <= 2) && + (tiling_info.x_tile_max <= 1)) { + value.skip_init_hdrs = false; + } + } } } /* FIXME: When pvr_setup_tiles_in_flight() is refactored it might be