mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-06-19 19:18:21 +02:00
panvk: Wire up VK_EXT_conservative_rasterization on v11+
Mali >= v11 has a Conservative Rast Mode field in DCD Flags 0 with values Disabled and Over Estimate. Wire it to vk_runtime's rasterization state and expose the extension on PAN_ARCH >= 11, with caps restricted to overestimate only — HW has no underestimate value and no overestimation-size granularity. On v11-v13, degenerate triangles produce a wrong fragment w when overestimate is enabled, so cull_zero_area is forced on alongside the mode bit and degenerateTrianglesRasterized is reported as false. Signed-off-by: Christian Gmeiner <cgmeiner@igalia.com> Reviewed-by: Lars-Ivar Hesselberg Simonsen <lars-ivar.simonsen@arm.com> Acked-by: Erik Faye-Lund <erik.faye-lund@collabora.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/41189>
This commit is contained in:
parent
df3de4acbb
commit
7d59c62fde
4 changed files with 26 additions and 1 deletions
|
|
@ -611,7 +611,7 @@ Khronos extensions that are not part of any Vulkan version:
|
|||
VK_EXT_calibrated_timestamps DONE (anv, hasvk, hk, kk, nvk, panvk/v10+, lvp, radv, vn, tu/a750+)
|
||||
VK_EXT_color_write_enable DONE (anv, hasvk, hk, lvp, nvk, panvk, pvr, radv, tu, v3dv, vn)
|
||||
VK_EXT_conditional_rendering DONE (anv, hasvk, lvp, nvk, panvk/v10+, radv, tu, vn)
|
||||
VK_EXT_conservative_rasterization DONE (anv, nvk, radv, vn, tu/a7xx+)
|
||||
VK_EXT_conservative_rasterization DONE (anv, nvk, panvk/v11+, radv, vn, tu/a7xx+)
|
||||
VK_EXT_custom_border_color DONE (anv, hasvk, hk, lvp, nvk, panvk, pvr, radv, tu, v3dv, vn)
|
||||
VK_EXT_custom_resolve DONE (radv, tu)
|
||||
VK_EXT_debug_marker DONE (radv)
|
||||
|
|
|
|||
|
|
@ -5,3 +5,4 @@ VK_KHR_shader_constant_data on RADV
|
|||
VK_EXT_dynamic_rendering_unused_attachments on panvk
|
||||
protectedMemory support on RADV/GFX10+ and VEGA10
|
||||
VK_KHR_performance_query on RADV/GFX11
|
||||
VK_EXT_conservative_rasterization on panvk
|
||||
|
|
|
|||
|
|
@ -1879,6 +1879,9 @@ prepare_dcd(struct panvk_cmd_buffer *cmdbuf,
|
|||
dyn_gfx_state_dirty(cmdbuf, RS_CULL_MODE) ||
|
||||
dyn_gfx_state_dirty(cmdbuf, RS_LINE_MODE) ||
|
||||
dyn_gfx_state_dirty(cmdbuf, RS_FRONT_FACE) ||
|
||||
#if PAN_ARCH >= 11
|
||||
dyn_gfx_state_dirty(cmdbuf, RS_CONSERVATIVE_MODE) ||
|
||||
#endif
|
||||
dyn_gfx_state_dirty(cmdbuf, MS_RASTERIZATION_SAMPLES) ||
|
||||
dyn_gfx_state_dirty(cmdbuf, MS_SAMPLE_MASK) ||
|
||||
dyn_gfx_state_dirty(cmdbuf, MS_ALPHA_TO_COVERAGE_ENABLE) ||
|
||||
|
|
@ -2009,6 +2012,15 @@ prepare_dcd(struct panvk_cmd_buffer *cmdbuf,
|
|||
cfg.multisample_enable = msaa;
|
||||
cfg.occlusion_query = cmdbuf->state.gfx.occlusion_query.mode;
|
||||
cfg.alpha_to_coverage = alpha_to_coverage;
|
||||
#if PAN_ARCH >= 11
|
||||
cfg.conservative_rast_mode =
|
||||
rs->conservative_mode == VK_CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT
|
||||
? MALI_CONSERVATIVE_RAST_MODE_OVER_ESTIMATE
|
||||
: MALI_CONSERVATIVE_RAST_MODE_DISABLED;
|
||||
#if PAN_ARCH < 14
|
||||
cfg.cull_zero_area = true;
|
||||
#endif
|
||||
#endif
|
||||
}
|
||||
|
||||
cs_update_vt_ctx(b)
|
||||
|
|
|
|||
|
|
@ -139,6 +139,7 @@ panvk_per_arch(get_physical_device_extensions)(
|
|||
device->kmod.dev->props.gpu_can_query_timestamp,
|
||||
.EXT_conditional_rendering = PAN_ARCH >= 10,
|
||||
.EXT_color_write_enable = true,
|
||||
.EXT_conservative_rasterization = PAN_ARCH >= 11,
|
||||
.EXT_custom_border_color = true,
|
||||
.EXT_depth_bias_control = true,
|
||||
.EXT_depth_clamp_control = true,
|
||||
|
|
@ -1153,6 +1154,17 @@ panvk_per_arch(get_physical_device_properties)(
|
|||
.image2DViewOf3DSparse = false,
|
||||
.defaultVertexAttributeValue = VK_DEFAULT_VERTEX_ATTRIBUTE_VALUE_ZERO_ZERO_ZERO_ZERO_KHR,
|
||||
|
||||
/* VK_EXT_conservative_rasterization */
|
||||
.primitiveOverestimationSize = 1.0f / 512.0f,
|
||||
.maxExtraPrimitiveOverestimationSize = 0.0f,
|
||||
.extraPrimitiveOverestimationSizeGranularity = 0.0f,
|
||||
.primitiveUnderestimation = false,
|
||||
.conservativePointAndLineRasterization = false,
|
||||
.degenerateTrianglesRasterized = PAN_ARCH >= 14,
|
||||
.degenerateLinesRasterized = false,
|
||||
.fullyCoveredFragmentShaderInputVariable = false,
|
||||
.conservativeRasterizationPostDepthCoverage = false,
|
||||
|
||||
/* VK_EXT_custom_border_color */
|
||||
.maxCustomBorderColorSamplers = 32768,
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue