Module: Mesa Branch: main Commit: 87b089c711ad20f873cb6ba455794d5494ece2e9 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=87b089c711ad20f873cb6ba455794d5494ece2e9
Author: Mike Blumenkrantz <[email protected]> Date: Mon Jun 7 19:26:30 2021 -0400 lavapipe: hook up some bits for handling dynamic line stipple state this won't actually work, but it stubs out some (functional) placeholder code for later code to build on Reviewed-by: Dave Airlie <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11231> --- src/gallium/frontends/lavapipe/lvp_execute.c | 12 +++++++++--- src/gallium/frontends/lavapipe/lvp_private.h | 4 ++++ 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/src/gallium/frontends/lavapipe/lvp_execute.c b/src/gallium/frontends/lavapipe/lvp_execute.c index 4a119c09f19..2b08c8d6d32 100644 --- a/src/gallium/frontends/lavapipe/lvp_execute.c +++ b/src/gallium/frontends/lavapipe/lvp_execute.c @@ -342,10 +342,12 @@ static int conv_dynamic_state_idx(VkDynamicState dyn_state) { if (dyn_state <= VK_DYNAMIC_STATE_STENCIL_REFERENCE) return dyn_state; - + if (dyn_state == VK_DYNAMIC_STATE_LINE_STIPPLE_EXT) + /* this one has a weird id, map after the normal dynamic state ones */ + return VK_DYNAMIC_STATE_STENCIL_REFERENCE + 1; if (dyn_state >= VK_DYNAMIC_STATE_CULL_MODE_EXT && dyn_state <= VK_DYNAMIC_STATE_STENCIL_OP_EXT) - return dyn_state - VK_DYNAMIC_STATE_CULL_MODE_EXT + VK_DYNAMIC_STATE_STENCIL_REFERENCE + 1; + return dyn_state - VK_DYNAMIC_STATE_CULL_MODE_EXT + VK_DYNAMIC_STATE_STENCIL_REFERENCE + 2; assert(0); return -1; } @@ -354,7 +356,7 @@ static void handle_graphics_pipeline(struct lvp_cmd_buffer_entry *cmd, struct rendering_state *state) { struct lvp_pipeline *pipeline = cmd->u.pipeline.pipeline; - bool dynamic_states[VK_DYNAMIC_STATE_STENCIL_REFERENCE+13]; + bool dynamic_states[VK_DYNAMIC_STATE_STENCIL_REFERENCE+32]; unsigned fb_samples = 0; memset(dynamic_states, 0, sizeof(dynamic_states)); @@ -438,6 +440,10 @@ static void handle_graphics_pipeline(struct lvp_cmd_buffer_entry *cmd, if (!dynamic_states[VK_DYNAMIC_STATE_LINE_WIDTH]) state->rs_state.line_width = rsc->lineWidth; + if (!dynamic_states[conv_dynamic_state_idx(VK_DYNAMIC_STATE_LINE_STIPPLE_EXT)]) { + state->rs_state.line_stipple_factor = pipeline->line_stipple_factor; + state->rs_state.line_stipple_pattern = pipeline->line_stipple_pattern; + } if (!dynamic_states[VK_DYNAMIC_STATE_DEPTH_BIAS]) { state->rs_state.offset_units = rsc->depthBiasConstantFactor; diff --git a/src/gallium/frontends/lavapipe/lvp_private.h b/src/gallium/frontends/lavapipe/lvp_private.h index e3aeab01cc0..c2b3cb9aa48 100644 --- a/src/gallium/frontends/lavapipe/lvp_private.h +++ b/src/gallium/frontends/lavapipe/lvp_private.h @@ -479,6 +479,10 @@ struct lvp_pipeline { void *shader_cso[PIPE_SHADER_TYPES]; VkGraphicsPipelineCreateInfo graphics_create_info; VkComputePipelineCreateInfo compute_create_info; + uint32_t line_stipple_factor; + uint16_t line_stipple_pattern; + bool line_stipple_enable; + bool line_smooth; bool provoking_vertex_last; }; _______________________________________________ mesa-commit mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/mesa-commit
