llvmpipe: unify setting raster_state for thread data

avoid future cases of uninitialized memory

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/41407>
This commit is contained in:
Mike Blumenkrantz 2026-05-06 11:39:17 -04:00 committed by Marge Bot
parent 718a5d48b8
commit ffd534aae4
3 changed files with 13 additions and 6 deletions

View file

@ -366,8 +366,7 @@ lp_rast_shade_tile(struct lp_rasterizer_task *task,
mask[i / 4] |= (uint64_t)(0xffff) << (16 * (i % 4));
/* Propagate non-interpolated raster state. */
task->thread_data.raster_state.viewport_index = inputs->viewport_index;
task->thread_data.raster_state.view_index = inputs->view_index;
lp_rast_task_init_thread_data(&task->thread_data, inputs);
/* run shader on 4x4 block */
BEGIN_JIT_CALL(state, task);
@ -475,8 +474,7 @@ lp_rast_shade_quads_mask_sample(struct lp_rasterizer_task *task,
*/
if ((x % TILE_SIZE) < task->width && (y % TILE_SIZE) < task->height) {
/* Propagate non-interpolated raster state. */
task->thread_data.raster_state.viewport_index = inputs->viewport_index;
task->thread_data.raster_state.view_index = inputs->view_index;
lp_rast_task_init_thread_data(&task->thread_data, inputs);
/* run shader on 4x4 block */
BEGIN_JIT_CALL(state, task);
@ -1383,3 +1381,10 @@ lp_rast_fence(struct lp_rasterizer *rast,
if (fence)
lp_fence_reference((struct lp_fence **)fence, rast->last_fence);
}
void
lp_rast_task_init_thread_data(struct lp_jit_thread_data *thread_data, const struct lp_rast_shader_inputs *inputs)
{
thread_data->raster_state.viewport_index = inputs->viewport_index;
thread_data->raster_state.view_index = inputs->view_index;
}

View file

@ -447,4 +447,6 @@ void
lp_rast_fence(struct lp_rasterizer *rast,
struct lp_fence **fence);
void
lp_rast_task_init_thread_data(struct lp_jit_thread_data *thread_data, const struct lp_rast_shader_inputs *inputs);
#endif

View file

@ -33,6 +33,7 @@
#include "util/u_math.h"
#include "lp_debug.h"
#include "lp_perf.h"
#include "lp_rast.h"
#include "lp_rast_priv.h"
@ -103,8 +104,7 @@ shade_quads(struct lp_rasterizer_task *task,
assert(!variant->key.depth.enabled);
/* Propagate non-interpolated raster state */
task->thread_data.raster_state.view_index = inputs->view_index;
task->thread_data.raster_state.viewport_index = inputs->viewport_index;
lp_rast_task_init_thread_data(&task->thread_data, inputs);
/* run shader on 4x4 block */
BEGIN_JIT_CALL(state, task);