Mesa (main): lavapipe: expose strict-lines feature

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Mon Jul 12 22:31:23 UTC 2021


Module: Mesa
Branch: main
Commit: 1ac29863a94d589199e6b44cf52211d002ba84d1
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=1ac29863a94d589199e6b44cf52211d002ba84d1

Author: Erik Faye-Lund <erik.faye-lund at collabora.com>
Date:   Wed Jul  7 11:54:32 2021 +0200

lavapipe: expose strict-lines feature

The strictLines-feature requires lines to be rasterized as rectangles
by default instead of using the parallelograms you get from extending
bresenham lines along their minor axis.

Now that we can specify the line mode fully we can actually express
this, so let's do so.

Reviewed-by: Dave Airlie <airlied at redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11782>

---

 src/gallium/frontends/lavapipe/ci/deqp-lvp-fails.txt | 3 ++-
 src/gallium/frontends/lavapipe/lvp_device.c          | 2 +-
 src/gallium/frontends/lavapipe/lvp_pipeline.c        | 5 ++---
 3 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/src/gallium/frontends/lavapipe/ci/deqp-lvp-fails.txt b/src/gallium/frontends/lavapipe/ci/deqp-lvp-fails.txt
index 4137463bd66..94f887051a5 100644
--- a/src/gallium/frontends/lavapipe/ci/deqp-lvp-fails.txt
+++ b/src/gallium/frontends/lavapipe/ci/deqp-lvp-fails.txt
@@ -31,7 +31,8 @@ dEQP-VK.glsl.texture_functions.query.texturequerylod.usampler1darray_fragment,Fa
 dEQP-VK.image.mismatched_formats.image_write.a8b8g8r8_srgb_pack32_with_rgb10a2,Crash
 dEQP-VK.image.mismatched_formats.image_write.b8g8r8a8_srgb_with_rgba8,Crash
 dEQP-VK.image.mismatched_formats.image_write.r8g8b8a8_srgb_with_rgb10a2,Crash
-dEQP-VK.rasterization.interpolation.projected.non_strict_lines,Fail
+dEQP-VK.rasterization.primitives.static_stipple.rectangular_line_strip_wide,Fail
+dEQP-VK.rasterization.primitives_multisample_4_bit.dynamic_stipple.line_strip_wide,Fail
 dEQP-VK.texture.filtering.2d.combinations.linear_mipmap_linear.linear.clamp_to_edge.repeat,Fail
 dEQP-VK.texture.filtering.2d.combinations.linear_mipmap_linear.linear.mirror_clamp_to_edge.repeat,Fail
 dEQP-VK.texture.filtering.2d.combinations.linear_mipmap_linear.linear.mirrored_repeat.mirror_clamp_to_edge,Fail
diff --git a/src/gallium/frontends/lavapipe/lvp_device.c b/src/gallium/frontends/lavapipe/lvp_device.c
index 6d5dd04623f..064b2f97d6a 100644
--- a/src/gallium/frontends/lavapipe/lvp_device.c
+++ b/src/gallium/frontends/lavapipe/lvp_device.c
@@ -788,7 +788,7 @@ VKAPI_ATTR void VKAPI_CALL lvp_GetPhysicalDeviceProperties(VkPhysicalDevice phys
       .lineWidthRange                           = { 1.0, pdevice->pscreen->get_paramf(pdevice->pscreen, PIPE_CAPF_MAX_LINE_WIDTH) },
       .pointSizeGranularity                     = (1.0 / 8.0),
       .lineWidthGranularity                     = 1.0 / 128.0,
-      .strictLines                              = false, /* FINISHME */
+      .strictLines                              = true,
       .standardSampleLocations                  = true,
       .optimalBufferCopyOffsetAlignment         = 128,
       .optimalBufferCopyRowPitchAlignment       = 128,
diff --git a/src/gallium/frontends/lavapipe/lvp_pipeline.c b/src/gallium/frontends/lavapipe/lvp_pipeline.c
index a2a54bd99c9..11747abd982 100644
--- a/src/gallium/frontends/lavapipe/lvp_pipeline.c
+++ b/src/gallium/frontends/lavapipe/lvp_pipeline.c
@@ -815,14 +815,13 @@ lvp_graphics_pipeline_init(struct lvp_pipeline *pipeline,
       pipeline->line_smooth = line_state->lineRasterizationMode == VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT;
       pipeline->disable_multisample = line_state->lineRasterizationMode == VK_LINE_RASTERIZATION_MODE_BRESENHAM_EXT ||
                                       line_state->lineRasterizationMode == VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT;
-      pipeline->line_rectangular = line_state->lineRasterizationMode != VK_LINE_RASTERIZATION_MODE_BRESENHAM_EXT &&
-                                   line_state->lineRasterizationMode != VK_LINE_RASTERIZATION_MODE_DEFAULT_EXT;
+      pipeline->line_rectangular = line_state->lineRasterizationMode != VK_LINE_RASTERIZATION_MODE_BRESENHAM_EXT;
       if (!dynamic_state_contains(pipeline->graphics_create_info.pDynamicState, VK_DYNAMIC_STATE_LINE_STIPPLE_EXT)) {
          pipeline->line_stipple_factor = line_state->lineStippleFactor - 1;
          pipeline->line_stipple_pattern = line_state->lineStipplePattern;
       }
    } else
-      pipeline->line_rectangular = false;
+      pipeline->line_rectangular = true;
 
 
    for (uint32_t i = 0; i < pCreateInfo->stageCount; i++) {



More information about the mesa-commit mailing list