pvr: Fix SPM load shader sample rate

Reported-by: James Glanville <james.glanville@imgtec.com>
Signed-off-by: Karmjit Mahil <Karmjit.Mahil@imgtec.com>
Reviewed-by: Frank Binns <frank.binns@imgtec.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25584>
This commit is contained in:
Karmjit Mahil
2023-10-03 15:28:28 +01:00
committed by Marge Bot
parent 41a9af4819
commit df57840dd0
2 changed files with 71 additions and 2 deletions
+7 -1
View File
@@ -358,15 +358,21 @@ VkResult pvr_device_init_spm_load_state(struct pvr_device *device)
const pvr_dev_addr_t usc_program_dev_addr =
PVR_DEV_ADDR_OFFSET(usc_bo->dev_addr, usc_aligned_offsets[i]);
struct pvr_pds_kickusc_program pds_kick_program = { 0 };
enum PVRX(PDSINST_DOUTU_SAMPLE_RATE) sample_rate;
pvr_pds_generate_pixel_shader_sa_code_segment(
&pds_texture_program,
(uint32_t *)(mem_ptr + pds_texture_aligned_offsets[i]));
if (spm_load_collection[i].info->msaa_sample_count > 1)
sample_rate = PVRX(PDSINST_DOUTU_SAMPLE_RATE_FULL);
else
sample_rate = PVRX(PDSINST_DOUTU_SAMPLE_RATE_INSTANCE);
pvr_pds_setup_doutu(&pds_kick_program.usc_task_control,
usc_program_dev_addr.addr,
spm_load_collection[i].info->temps_required,
PVRX(PDSINST_DOUTU_SAMPLE_RATE_INSTANCE),
sample_rate,
false);
/* Generated both code and data. */
@@ -52,6 +52,7 @@ struct pvr_shader_factory_info {
uint32_t num_driver_consts;
const struct pvr_static_buffer *static_const_buffer;
uint32_t num_static_const;
uint32_t msaa_sample_count;
};
static const uint8_t availability_query_write_shader[144] = { 0 };
@@ -84,6 +85,7 @@ static const struct pvr_shader_factory_info availability_query_write_info = {
0,
availability_query_write_static_consts,
0,
~0,
};
static const uint8_t copy_query_results_shader[384] = { 0 };
@@ -114,6 +116,7 @@ static const struct pvr_shader_factory_info copy_query_results_info = {
0,
copy_query_results_static_consts,
0,
~0,
};
static const uint8_t reset_query_shader_code[136] = { 0 };
@@ -144,6 +147,7 @@ static const struct pvr_shader_factory_info reset_query_info = {
0,
reset_query_static_consts,
0,
~0,
};
static const struct pvr_shader_factory_info
@@ -179,6 +183,7 @@ static const struct pvr_shader_factory_info
0,
NULL,
0,
1,
};
static const uint8_t clear_attachments_1_dw_0_offt_out_mem_shader_code[8] = {
@@ -205,6 +210,7 @@ static const struct pvr_shader_factory_info
0,
NULL,
0,
1,
};
static const uint8_t clear_attachments_2_dw_0_offt_out_reg_shader_code[8] = {
@@ -231,6 +237,7 @@ static const struct pvr_shader_factory_info
0,
NULL,
0,
1,
};
static const uint8_t clear_attachments_2_dw_0_offt_out_mem_shader_code[8] = {
@@ -257,6 +264,7 @@ static const struct pvr_shader_factory_info
0,
NULL,
0,
1,
};
static const uint8_t clear_attachments_3_dw_0_offt_out_reg_shader_code[8] = {
@@ -283,6 +291,7 @@ static const struct pvr_shader_factory_info
0,
NULL,
0,
1,
};
static const uint8_t clear_attachments_3_dw_0_offt_out_mem_shader_code[8] = {
@@ -309,6 +318,7 @@ static const struct pvr_shader_factory_info
0,
NULL,
0,
1,
};
static const uint8_t clear_attachments_4_dw_0_offt_out_reg_shader_code[8] = {
@@ -335,6 +345,7 @@ static const struct pvr_shader_factory_info
0,
NULL,
0,
1,
};
static const uint8_t clear_attachments_4_dw_0_offt_out_mem_shader_code[8] = {
@@ -361,6 +372,7 @@ static const struct pvr_shader_factory_info
0,
NULL,
0,
1,
};
static const uint8_t clear_attachments_1_dw_1_offt_out_reg_shader_code[8] = {
@@ -387,6 +399,7 @@ static const struct pvr_shader_factory_info
0,
NULL,
0,
1,
};
static const uint8_t clear_attachments_1_dw_1_offt_out_mem_shader_code[8] = {
@@ -413,6 +426,7 @@ static const struct pvr_shader_factory_info
0,
NULL,
0,
1,
};
static const uint8_t clear_attachments_2_dw_1_offt_out_reg_shader_code[8] = {
@@ -439,6 +453,7 @@ static const struct pvr_shader_factory_info
0,
NULL,
0,
1,
};
static const uint8_t clear_attachments_2_dw_1_offt_out_mem_shader_code[8] = {
@@ -465,6 +480,7 @@ static const struct pvr_shader_factory_info
0,
NULL,
0,
1,
};
static const uint8_t clear_attachments_3_dw_1_offt_out_reg_shader_code[8] = {
@@ -491,6 +507,7 @@ static const struct pvr_shader_factory_info
0,
NULL,
0,
1,
};
static const uint8_t clear_attachments_3_dw_1_offt_out_mem_shader_code[8] = {
@@ -517,6 +534,7 @@ static const struct pvr_shader_factory_info
0,
NULL,
0,
1,
};
static const uint8_t clear_attachments_4_dw_1_offt_out_reg_shader_code[8] = {
@@ -595,6 +613,7 @@ static const struct pvr_shader_factory_info
0,
NULL,
0,
1,
};
static const uint8_t clear_attachments_1_dw_2_offt_out_mem_shader_code[8] = {
@@ -621,6 +640,7 @@ static const struct pvr_shader_factory_info
0,
NULL,
0,
1,
};
static const uint8_t clear_attachments_2_dw_2_offt_out_reg_shader_code[8] = {
@@ -647,6 +667,7 @@ static const struct pvr_shader_factory_info
0,
NULL,
0,
1,
};
static const uint8_t clear_attachments_2_dw_2_offt_out_mem_shader_code[8] = {
@@ -673,6 +694,7 @@ static const struct pvr_shader_factory_info
0,
NULL,
0,
1,
};
static const uint8_t clear_attachments_3_dw_2_offt_out_reg_shader_code[8] = {
@@ -803,6 +825,7 @@ static const struct pvr_shader_factory_info
0,
NULL,
0,
1,
};
static const uint8_t clear_attachments_1_dw_3_offt_out_mem_shader_code[8] = {
@@ -1505,6 +1528,7 @@ static const struct pvr_shader_factory_info
0,
NULL,
0,
1,
};
static struct {
const uint8_t *code;
@@ -1700,6 +1724,7 @@ static const struct pvr_shader_factory_info spm_load_1X_1_regs_info = {
0,
NULL,
0,
1,
};
static const uint8_t spm_load_1X_2_regs_shader_code[8] = { 0 };
@@ -1721,6 +1746,7 @@ static const struct pvr_shader_factory_info spm_load_1X_2_regs_info = {
0,
NULL,
0,
1,
};
static const uint8_t spm_load_1X_4_regs_shader_code[8] = { 0 };
@@ -1742,6 +1768,7 @@ static const struct pvr_shader_factory_info spm_load_1X_4_regs_info = {
0,
NULL,
0,
1,
};
static const uint8_t spm_load_1X_1_buffers_shader_code[8] = { 0 };
@@ -1765,6 +1792,7 @@ static const struct pvr_shader_factory_info spm_load_1X_1_buffers_info = {
0,
NULL,
0,
1,
};
static const uint8_t spm_load_1X_2_buffers_shader_code[8] = { 0 };
@@ -1788,6 +1816,7 @@ static const struct pvr_shader_factory_info spm_load_1X_2_buffers_info = {
0,
NULL,
0,
1,
};
static const uint8_t spm_load_1X_3_buffers_shader_code[8] = { 0 };
@@ -1811,6 +1840,7 @@ static const struct pvr_shader_factory_info spm_load_1X_3_buffers_info = {
0,
NULL,
0,
1,
};
static const uint8_t spm_load_1X_4_buffers_shader_code[8] = { 0 };
@@ -1834,6 +1864,7 @@ static const struct pvr_shader_factory_info spm_load_1X_4_buffers_info = {
0,
NULL,
0,
1,
};
static const uint8_t spm_load_1X_5_buffers_shader_code[8] = { 0 };
@@ -1857,6 +1888,7 @@ static const struct pvr_shader_factory_info spm_load_1X_5_buffers_info = {
0,
NULL,
0,
1,
};
static const uint8_t spm_load_1X_6_buffers_shader_code[8] = { 0 };
@@ -1880,6 +1912,7 @@ static const struct pvr_shader_factory_info spm_load_1X_6_buffers_info = {
0,
NULL,
0,
1,
};
static const uint8_t spm_load_1X_7_buffers_shader_code[8] = { 0 };
@@ -1903,6 +1936,7 @@ static const struct pvr_shader_factory_info spm_load_1X_7_buffers_info = {
0,
NULL,
0,
1,
};
static const uint8_t spm_load_2X_1_regs_shader_code[8] = { 0 };
@@ -1924,6 +1958,7 @@ static const struct pvr_shader_factory_info spm_load_2X_1_regs_info = {
0,
NULL,
0,
2,
};
static const uint8_t spm_load_2X_2_regs_shader_code[8] = { 0 };
@@ -1945,6 +1980,7 @@ static const struct pvr_shader_factory_info spm_load_2X_2_regs_info = {
0,
NULL,
0,
2,
};
static const uint8_t spm_load_2X_4_regs_shader_code[8] = { 0 };
@@ -1966,6 +2002,7 @@ static const struct pvr_shader_factory_info spm_load_2X_4_regs_info = {
0,
NULL,
0,
2,
};
static const uint8_t spm_load_2X_1_buffers_shader_code[8] = { 0 };
@@ -1989,6 +2026,7 @@ static const struct pvr_shader_factory_info spm_load_2X_1_buffers_info = {
0,
NULL,
0,
2,
};
static const uint8_t spm_load_2X_2_buffers_shader_code[8] = { 0 };
@@ -2012,6 +2050,7 @@ static const struct pvr_shader_factory_info spm_load_2X_2_buffers_info = {
0,
NULL,
0,
2,
};
static const uint8_t spm_load_2X_3_buffers_shader_code[8] = { 0 };
@@ -2035,6 +2074,7 @@ static const struct pvr_shader_factory_info spm_load_2X_3_buffers_info = {
0,
NULL,
0,
2,
};
static const uint8_t spm_load_2X_4_buffers_shader_code[8] = { 0 };
@@ -2058,6 +2098,7 @@ static const struct pvr_shader_factory_info spm_load_2X_4_buffers_info = {
0,
NULL,
0,
2,
};
static const uint8_t spm_load_2X_5_buffers_shader_code[8] = { 0 };
@@ -2081,6 +2122,7 @@ static const struct pvr_shader_factory_info spm_load_2X_5_buffers_info = {
0,
NULL,
0,
2,
};
static const uint8_t spm_load_2X_6_buffers_shader_code[8] = { 0 };
@@ -2104,6 +2146,7 @@ static const struct pvr_shader_factory_info spm_load_2X_6_buffers_info = {
0,
NULL,
0,
2,
};
static const uint8_t spm_load_2X_7_buffers_shader_code[8] = { 0 };
@@ -2127,6 +2170,7 @@ static const struct pvr_shader_factory_info spm_load_2X_7_buffers_info = {
0,
NULL,
0,
2,
};
static const uint8_t spm_load_4X_1_regs_shader_code[8] = { 0 };
@@ -2148,6 +2192,7 @@ static const struct pvr_shader_factory_info spm_load_4X_1_regs_info = {
0,
NULL,
0,
4,
};
static const uint8_t spm_load_4X_2_regs_shader_code[8] = { 0 };
@@ -2169,13 +2214,14 @@ static const struct pvr_shader_factory_info spm_load_4X_2_regs_info = {
0,
NULL,
0,
4,
};
static const uint8_t spm_load_4X_4_regs_shader_code[8] = { 0 };
static const struct pvr_shader_factory_info spm_load_4X_4_regs_info = {
0, 0, 0, 0, 0, 0, spm_load_4X_4_regs_shader_code, 0, 0, NULL,
0, 0, NULL, 0, NULL, 0,
0, 0, NULL, 0, NULL, 0, 4
};
static const uint8_t spm_load_4X_1_buffers_shader_code[8] = { 0 };
@@ -2199,6 +2245,7 @@ static const struct pvr_shader_factory_info spm_load_4X_1_buffers_info = {
0,
NULL,
0,
4,
};
static const uint8_t spm_load_4X_2_buffers_shader_code[8] = { 0 };
@@ -2222,6 +2269,7 @@ static const struct pvr_shader_factory_info spm_load_4X_2_buffers_info = {
0,
NULL,
0,
4,
};
static const uint8_t spm_load_4X_3_buffers_shader_code[8] = { 0 };
@@ -2245,6 +2293,7 @@ static const struct pvr_shader_factory_info spm_load_4X_3_buffers_info = {
0,
NULL,
0,
4,
};
static const uint8_t spm_load_4X_4_buffers_shader_code[8] = { 0 };
@@ -2268,6 +2317,7 @@ static const struct pvr_shader_factory_info spm_load_4X_4_buffers_info = {
0,
NULL,
0,
4,
};
static const uint8_t spm_load_4X_5_buffers_shader_code[8] = { 0 };
@@ -2291,6 +2341,7 @@ static const struct pvr_shader_factory_info spm_load_4X_5_buffers_info = {
0,
NULL,
0,
4,
};
static const uint8_t spm_load_4X_6_buffers_shader_code[8] = { 0 };
@@ -2314,6 +2365,7 @@ static const struct pvr_shader_factory_info spm_load_4X_6_buffers_info = {
0,
NULL,
0,
4,
};
static const uint8_t spm_load_4X_7_buffers_shader_code[8] = { 0 };
@@ -2337,6 +2389,7 @@ static const struct pvr_shader_factory_info spm_load_4X_7_buffers_info = {
0,
NULL,
0,
4,
};
static const uint8_t spm_load_8X_1_regs_shader_code[8] = { 0 };
@@ -2358,6 +2411,7 @@ static const struct pvr_shader_factory_info spm_load_8X_1_regs_info = {
0,
NULL,
0,
8,
};
static const uint8_t spm_load_8X_2_regs_shader_code[8] = { 0 };
@@ -2379,6 +2433,7 @@ static const struct pvr_shader_factory_info spm_load_8X_2_regs_info = {
0,
NULL,
0,
8,
};
static const uint8_t spm_load_8X_4_regs_shader_code[8] = { 0 };
@@ -2400,6 +2455,7 @@ static const struct pvr_shader_factory_info spm_load_8X_4_regs_info = {
0,
NULL,
0,
8,
};
static const uint8_t spm_load_8X_1_buffers_shader_code[8] = { 0 };
@@ -2423,6 +2479,7 @@ static const struct pvr_shader_factory_info spm_load_8X_1_buffers_info = {
0,
NULL,
0,
8,
};
static const uint8_t spm_load_8X_2_buffers_shader_code[8] = { 0 };
@@ -2446,6 +2503,7 @@ static const struct pvr_shader_factory_info spm_load_8X_2_buffers_info = {
0,
NULL,
0,
8,
};
static const uint8_t spm_load_8X_3_buffers_shader_code[8] = { 0 };
@@ -2469,6 +2527,7 @@ static const struct pvr_shader_factory_info spm_load_8X_3_buffers_info = {
0,
NULL,
0,
8,
};
static const uint8_t spm_load_8X_4_buffers_shader_code[8] = { 0 };
@@ -2492,6 +2551,7 @@ static const struct pvr_shader_factory_info spm_load_8X_4_buffers_info = {
0,
NULL,
0,
8,
};
static const uint8_t spm_load_8X_5_buffers_shader_code[8] = { 0 };
@@ -2515,6 +2575,7 @@ static const struct pvr_shader_factory_info spm_load_8X_5_buffers_info = {
0,
NULL,
0,
8,
};
static const uint8_t spm_load_8X_6_buffers_shader_code[8] = { 0 };
@@ -2538,6 +2599,7 @@ static const struct pvr_shader_factory_info spm_load_8X_6_buffers_info = {
0,
NULL,
0,
8,
};
static const uint8_t spm_load_8X_7_buffers_shader_code[8] = { 0 };
@@ -2561,6 +2623,7 @@ static const struct pvr_shader_factory_info spm_load_8X_7_buffers_info = {
0,
NULL,
0,
8,
};
static struct {
const uint8_t *code;