When set, EXPAND_LINE_WIDTH expands the line width by 1/cos(a),
where a is the minimum angle from horizontal or vertical. This
seems required by OpenGL line rasterization but not by Vulkan.
Similar to what AMDVLK and AMDGPU-PRO do for AA wide lines.
This fixes
dEQP-VK.rasterization.interpolation_multisample_*_bit.*lines_wide.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5698>
dEQP-VK.rasterization.interpolation.projected.lines_wide
dEQP-VK.rasterization.interpolation.projected.non_strict_line_strip_wide
dEQP-VK.rasterization.interpolation.projected.non_strict_lines_wide
dEQP-VK.rasterization.interpolation.projected.lines_wide
dEQP-VK.rasterization.interpolation.projected.non_strict_line_strip_wide
dEQP-VK.rasterization.interpolation.projected.non_strict_lines_wide
-dEQP-VK.rasterization.interpolation_multisample_2_bit.lines_wide
-dEQP-VK.rasterization.interpolation_multisample_2_bit.non_strict_lines_wide
-dEQP-VK.rasterization.interpolation_multisample_4_bit.lines_wide
-dEQP-VK.rasterization.interpolation_multisample_4_bit.non_strict_lines_wide
-dEQP-VK.rasterization.interpolation_multisample_8_bit.lines_wide
-dEQP-VK.rasterization.interpolation_multisample_8_bit.non_strict_lines_wide
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_bvec3
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_bvec3_requiredsubgroupsize64
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_dvec3
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_bvec3
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_bvec3_requiredsubgroupsize64
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_dvec3
dEQP-VK.rasterization.interpolation.projected.lines_wide
dEQP-VK.rasterization.interpolation.projected.non_strict_line_strip_wide
dEQP-VK.rasterization.interpolation.projected.non_strict_lines_wide
dEQP-VK.rasterization.interpolation.projected.lines_wide
dEQP-VK.rasterization.interpolation.projected.non_strict_line_strip_wide
dEQP-VK.rasterization.interpolation.projected.non_strict_lines_wide
-dEQP-VK.rasterization.interpolation_multisample_2_bit.lines_wide
-dEQP-VK.rasterization.interpolation_multisample_2_bit.non_strict_lines_wide
-dEQP-VK.rasterization.interpolation_multisample_4_bit.lines_wide
-dEQP-VK.rasterization.interpolation_multisample_4_bit.non_strict_lines_wide
-dEQP-VK.rasterization.interpolation_multisample_8_bit.lines_wide
-dEQP-VK.rasterization.interpolation_multisample_8_bit.non_strict_lines_wide
dEQP-VK.rasterization.interpolation.projected.lines_wide
dEQP-VK.rasterization.interpolation.projected.non_strict_line_strip_wide
dEQP-VK.rasterization.interpolation.projected.non_strict_lines_wide
dEQP-VK.rasterization.interpolation.projected.lines_wide
dEQP-VK.rasterization.interpolation.projected.non_strict_line_strip_wide
dEQP-VK.rasterization.interpolation.projected.non_strict_lines_wide
-dEQP-VK.rasterization.interpolation_multisample_2_bit.lines_wide
-dEQP-VK.rasterization.interpolation_multisample_2_bit.non_strict_lines_wide
-dEQP-VK.rasterization.interpolation_multisample_4_bit.lines_wide
-dEQP-VK.rasterization.interpolation_multisample_4_bit.non_strict_lines_wide
-dEQP-VK.rasterization.interpolation_multisample_8_bit.lines_wide
-dEQP-VK.rasterization.interpolation_multisample_8_bit.non_strict_lines_wide
dEQP-VK.rasterization.interpolation.projected.lines_wide
dEQP-VK.rasterization.interpolation.projected.non_strict_line_strip_wide
dEQP-VK.rasterization.interpolation.projected.non_strict_lines_wide
dEQP-VK.rasterization.interpolation.projected.lines_wide
dEQP-VK.rasterization.interpolation.projected.non_strict_line_strip_wide
dEQP-VK.rasterization.interpolation.projected.non_strict_lines_wide
-dEQP-VK.rasterization.interpolation_multisample_2_bit.lines_wide
-dEQP-VK.rasterization.interpolation_multisample_2_bit.non_strict_lines_wide
-dEQP-VK.rasterization.interpolation_multisample_4_bit.lines_wide
-dEQP-VK.rasterization.interpolation_multisample_4_bit.non_strict_lines_wide
-dEQP-VK.rasterization.interpolation_multisample_8_bit.lines_wide
-dEQP-VK.rasterization.interpolation_multisample_8_bit.non_strict_lines_wide
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_bvec3
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_bvec3_requiredsubgroupsize64
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_dvec3
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_bvec3
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_bvec3_requiredsubgroupsize64
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_dvec3
dEQP-VK.rasterization.interpolation.projected.lines_wide
dEQP-VK.rasterization.interpolation.projected.non_strict_line_strip_wide
dEQP-VK.rasterization.interpolation.projected.non_strict_lines_wide
dEQP-VK.rasterization.interpolation.projected.lines_wide
dEQP-VK.rasterization.interpolation.projected.non_strict_line_strip_wide
dEQP-VK.rasterization.interpolation.projected.non_strict_lines_wide
-dEQP-VK.rasterization.interpolation_multisample_2_bit.lines_wide
-dEQP-VK.rasterization.interpolation_multisample_2_bit.non_strict_lines_wide
-dEQP-VK.rasterization.interpolation_multisample_4_bit.lines_wide
-dEQP-VK.rasterization.interpolation_multisample_4_bit.non_strict_lines_wide
-dEQP-VK.rasterization.interpolation_multisample_8_bit.lines_wide
-dEQP-VK.rasterization.interpolation_multisample_8_bit.non_strict_lines_wide
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_bvec3
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_bvec3_requiredsubgroupsize64
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_dvec3
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_bvec3
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_bvec3_requiredsubgroupsize64
dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_dvec3
dEQP-VK.rasterization.interpolation.projected.lines_wide
dEQP-VK.rasterization.interpolation.projected.non_strict_line_strip_wide
dEQP-VK.rasterization.interpolation.projected.non_strict_lines_wide
dEQP-VK.rasterization.interpolation.projected.lines_wide
dEQP-VK.rasterization.interpolation.projected.non_strict_line_strip_wide
dEQP-VK.rasterization.interpolation.projected.non_strict_lines_wide
-dEQP-VK.rasterization.interpolation_multisample_2_bit.lines_wide
-dEQP-VK.rasterization.interpolation_multisample_2_bit.non_strict_lines_wide
-dEQP-VK.rasterization.interpolation_multisample_4_bit.lines_wide
-dEQP-VK.rasterization.interpolation_multisample_4_bit.non_strict_lines_wide
-dEQP-VK.rasterization.interpolation_multisample_8_bit.lines_wide
-dEQP-VK.rasterization.interpolation_multisample_8_bit.non_strict_lines_wide
dEQP-VK.rasterization.interpolation.projected.lines_wide
dEQP-VK.rasterization.interpolation.projected.non_strict_line_strip_wide
dEQP-VK.rasterization.interpolation.projected.non_strict_lines_wide
dEQP-VK.rasterization.interpolation.projected.lines_wide
dEQP-VK.rasterization.interpolation.projected.non_strict_line_strip_wide
dEQP-VK.rasterization.interpolation.projected.non_strict_lines_wide
-dEQP-VK.rasterization.interpolation_multisample_2_bit.lines_wide
-dEQP-VK.rasterization.interpolation_multisample_2_bit.non_strict_lines_wide
-dEQP-VK.rasterization.interpolation_multisample_4_bit.lines_wide
-dEQP-VK.rasterization.interpolation_multisample_4_bit.non_strict_lines_wide
-dEQP-VK.rasterization.interpolation_multisample_8_bit.lines_wide
-dEQP-VK.rasterization.interpolation_multisample_8_bit.non_strict_lines_wide
unsigned log_z_samples = util_logbase2(z_samples);
unsigned log_ps_iter_samples = util_logbase2(ps_iter_samples);
ms->pa_sc_mode_cntl_0 |= S_028A48_MSAA_ENABLE(1);
unsigned log_z_samples = util_logbase2(z_samples);
unsigned log_ps_iter_samples = util_logbase2(ps_iter_samples);
ms->pa_sc_mode_cntl_0 |= S_028A48_MSAA_ENABLE(1);
- ms->pa_sc_line_cntl |= S_028BDC_EXPAND_LINE_WIDTH(1); /* CM_R_028BDC_PA_SC_LINE_CNTL */
ms->db_eqaa |= S_028804_MAX_ANCHOR_SAMPLES(log_z_samples) |
S_028804_PS_ITER_SAMPLES(log_ps_iter_samples) |
S_028804_MASK_EXPORT_NUM_SAMPLES(log_samples) |
ms->db_eqaa |= S_028804_MAX_ANCHOR_SAMPLES(log_z_samples) |
S_028804_PS_ITER_SAMPLES(log_ps_iter_samples) |
S_028804_MASK_EXPORT_NUM_SAMPLES(log_samples) |