freedreno,ir3: Add has_early_preamble

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27462>
This commit is contained in:
Connor Abbott 2024-01-29 10:01:32 -05:00 committed by Marge Bot
parent aa1603bcb0
commit 1f1f42e9d4
4 changed files with 14 additions and 0 deletions

View file

@ -174,6 +174,8 @@ struct fd_dev_info {
/* See ir3_compiler::has_scalar_alu. */
bool has_scalar_alu;
/* See ir3_compiler::has_early_preamble. */
bool has_early_preamble;
bool has_isam_v;
bool has_ssbo_imm_offsets;

View file

@ -390,6 +390,7 @@ a6xx_gen3 = A6XXProps(
lrz_track_quirk = True,
has_per_view_viewport = True,
has_scalar_alu = True,
has_early_preamble = True,
)
a6xx_gen4 = A6XXProps(
@ -416,6 +417,7 @@ a6xx_gen4 = A6XXProps(
has_scalar_alu = True,
has_isam_v = True,
has_ssbo_imm_offsets = True,
has_early_preamble = True,
)
a6xx_a690_quirk = A6XXProps(
@ -798,6 +800,7 @@ a7xx_base = A6XXProps(
has_coherent_ubwc_flag_caches = True,
has_isam_v = True,
has_ssbo_imm_offsets = True,
has_early_preamble = True,
)
a7xx_725 = A7XXProps(

View file

@ -227,6 +227,7 @@ ir3_compiler_create(struct fd_device *dev, const struct fd_dev_id *dev_id,
compiler->has_isam_v = dev_info->a6xx.has_isam_v;
compiler->has_ssbo_imm_offsets = dev_info->a6xx.has_ssbo_imm_offsets;
compiler->fs_must_have_non_zero_constlen_quirk = dev_info->a7xx.fs_must_have_non_zero_constlen_quirk;
compiler->has_early_preamble = dev_info->a6xx.has_early_preamble;
} else {
compiler->max_const_pipeline = 512;
compiler->max_const_geom = 512;
@ -241,6 +242,7 @@ ir3_compiler_create(struct fd_device *dev, const struct fd_dev_id *dev_id,
compiler->has_scalar_alu = false;
compiler->has_isam_v = false;
compiler->has_ssbo_imm_offsets = false;
compiler->has_early_preamble = false;
}
/* This is just a guess for a4xx. */

View file

@ -284,6 +284,13 @@ struct ir3_compiler {
bool has_scalar_alu;
bool fs_must_have_non_zero_constlen_quirk;
/* On all generations that support scalar ALU, there is also a copy of the
* scalar ALU and some other HW units in HLSQ that can execute preambles
* before work is dispatched to the SPs, called "early preamble". We detect
* whether the shader can use early preamble in ir3.
*/
bool has_early_preamble;
};
void ir3_compiler_destroy(struct ir3_compiler *compiler);