mesa,gallium: not touch TS when internal draws
Some checks are pending
macOS-CI / macOS-CI (dri) (push) Waiting to run
macOS-CI / macOS-CI (xlib) (push) Waiting to run

TS does not affect vertex pipeline draws. We keep mesh shader
before radeonsi is ready.

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/37505>
This commit is contained in:
Qiang Yu 2025-10-13 14:54:54 +08:00 committed by Marge Bot
parent 4711fb711c
commit 11f2babddc
10 changed files with 27 additions and 23 deletions

View file

@ -183,13 +183,17 @@ cso_set_render_condition(struct cso_context *cso,
#define CSO_BIT_TASK_SHADER 0x100000
#define CSO_BIT_MESH_SHADER 0x200000
#define CSO_BITS_ALL_SHADERS (CSO_BIT_VERTEX_SHADER | \
CSO_BIT_FRAGMENT_SHADER | \
CSO_BIT_GEOMETRY_SHADER | \
CSO_BIT_TESSCTRL_SHADER | \
CSO_BIT_TESSEVAL_SHADER | \
CSO_BIT_TASK_SHADER | \
CSO_BIT_MESH_SHADER)
#define CSO_BITS_VERTEX_PIPE_SHADERS \
(CSO_BIT_VERTEX_SHADER | \
CSO_BIT_FRAGMENT_SHADER | \
CSO_BIT_GEOMETRY_SHADER | \
CSO_BIT_TESSCTRL_SHADER | \
CSO_BIT_TESSEVAL_SHADER)
#define CSO_BITS_MESH_PIPE_SHADERS \
(CSO_BIT_TASK_SHADER | \
CSO_BIT_MESH_SHADER | \
CSO_BIT_FRAGMENT_SHADER)
#define CSO_BIT_COMPUTE_SHADER (1<<0)
#define CSO_BIT_COMPUTE_SAMPLERS (1<<1)

View file

@ -524,7 +524,8 @@ hud_draw_results(struct hud_context *hud, struct pipe_resource *tex)
CSO_BIT_RASTERIZER |
CSO_BIT_VIEWPORT |
CSO_BIT_STREAM_OUTPUTS |
CSO_BITS_ALL_SHADERS |
CSO_BIT_MESH_SHADER |
CSO_BITS_VERTEX_PIPE_SHADERS |
CSO_BIT_VERTEX_ELEMENTS |
CSO_BIT_PAUSE_QUERIES |
CSO_BIT_RENDER_CONDITION));
@ -572,7 +573,6 @@ hud_draw_results(struct hud_context *hud, struct pipe_resource *tex)
cso_set_tessctrl_shader_handle(cso, NULL);
cso_set_tesseval_shader_handle(cso, NULL);
cso_set_geometry_shader_handle(cso, NULL);
cso_set_task_shader_handle(cso, NULL);
cso_set_mesh_shader_handle(cso, NULL);
cso_set_vertex_shader_handle(cso, hud->vs_color);
cso_set_vertex_elements(cso, &hud->velems);

View file

@ -127,7 +127,8 @@ pp_run(struct pp_queue_t *ppq, struct pipe_resource *in,
CSO_BIT_STENCIL_REF |
CSO_BIT_STREAM_OUTPUTS |
CSO_BIT_VERTEX_ELEMENTS |
CSO_BITS_ALL_SHADERS |
CSO_BIT_MESH_SHADER |
CSO_BITS_VERTEX_PIPE_SHADERS |
CSO_BIT_VIEWPORT |
CSO_BIT_PAUSE_QUERIES |
CSO_BIT_RENDER_CONDITION));
@ -139,7 +140,6 @@ pp_run(struct pp_queue_t *ppq, struct pipe_resource *in,
cso_set_tessctrl_shader_handle(cso, NULL);
cso_set_tesseval_shader_handle(cso, NULL);
cso_set_geometry_shader_handle(cso, NULL);
cso_set_task_shader_handle(cso, NULL);
cso_set_mesh_shader_handle(cso, NULL);
cso_set_render_condition(cso, NULL, false, 0);

View file

@ -209,7 +209,8 @@ setup_render_state(struct gl_context *ctx,
CSO_BIT_VIEWPORT |
CSO_BIT_STREAM_OUTPUTS |
CSO_BIT_VERTEX_ELEMENTS |
CSO_BITS_ALL_SHADERS));
CSO_BIT_MESH_SHADER |
CSO_BITS_VERTEX_PIPE_SHADERS));
/* rasterizer state: just scissor */
@ -226,7 +227,6 @@ setup_render_state(struct gl_context *ctx,
cso_set_tessctrl_shader_handle(cso, NULL);
cso_set_tesseval_shader_handle(cso, NULL);
cso_set_geometry_shader_handle(cso, NULL);
cso_set_task_shader_handle(cso, NULL);
cso_set_mesh_shader_handle(cso, NULL);
/* user samplers, plus our bitmap sampler */

View file

@ -225,7 +225,8 @@ clear_with_quad(struct gl_context *ctx, unsigned clear_buffers)
CSO_BIT_STREAM_OUTPUTS |
CSO_BIT_VERTEX_ELEMENTS |
(st->active_queries ? CSO_BIT_PAUSE_QUERIES : 0) |
CSO_BITS_ALL_SHADERS));
CSO_BIT_MESH_SHADER |
CSO_BITS_VERTEX_PIPE_SHADERS));
/* blend state: RGBA masking */
{
@ -296,7 +297,6 @@ clear_with_quad(struct gl_context *ctx, unsigned clear_buffers)
set_clearcolor_fs(st, (union pipe_color_union*)&ctx->Color.ClearColor);
cso_set_tessctrl_shader_handle(cso, NULL);
cso_set_tesseval_shader_handle(cso, NULL);
cso_set_task_shader_handle(cso, NULL);
cso_set_mesh_shader_handle(cso, NULL);
if (num_layers > 1)

View file

@ -747,7 +747,8 @@ draw_textured_quad(struct gl_context *ctx, GLint x, GLint y, GLfloat z,
CSO_BIT_FRAGMENT_SAMPLERS |
CSO_BIT_STREAM_OUTPUTS |
CSO_BIT_VERTEX_ELEMENTS |
CSO_BITS_ALL_SHADERS);
CSO_BIT_MESH_SHADER |
CSO_BITS_VERTEX_PIPE_SHADERS);
if (write_stencil) {
cso_state_mask |= (CSO_BIT_DEPTH_STENCIL_ALPHA |
CSO_BIT_BLEND);
@ -805,7 +806,6 @@ draw_textured_quad(struct gl_context *ctx, GLint x, GLint y, GLfloat z,
cso_set_tessctrl_shader_handle(cso, NULL);
cso_set_tesseval_shader_handle(cso, NULL);
cso_set_geometry_shader_handle(cso, NULL);
cso_set_task_shader_handle(cso, NULL);
cso_set_mesh_shader_handle(cso, NULL);
/* user samplers, plus the drawpix samplers */

View file

@ -252,7 +252,6 @@ st_DrawTex(struct gl_context *ctx, GLfloat x, GLfloat y, GLfloat z,
CSO_BIT_TESSCTRL_SHADER |
CSO_BIT_TESSEVAL_SHADER |
CSO_BIT_GEOMETRY_SHADER |
CSO_BIT_TASK_SHADER |
CSO_BIT_MESH_SHADER |
CSO_BIT_VERTEX_ELEMENTS));
@ -263,7 +262,6 @@ st_DrawTex(struct gl_context *ctx, GLfloat x, GLfloat y, GLfloat z,
cso_set_tessctrl_shader_handle(cso, NULL);
cso_set_tesseval_shader_handle(cso, NULL);
cso_set_geometry_shader_handle(cso, NULL);
cso_set_task_shader_handle(cso, NULL);
cso_set_mesh_shader_handle(cso, NULL);
for (i = 0; i < numAttribs; i++) {

View file

@ -149,7 +149,8 @@ try_pbo_readpixels(struct st_context *st, struct gl_renderbuffer *rb,
CSO_BIT_SAMPLE_MASK |
CSO_BIT_MIN_SAMPLES |
CSO_BIT_RENDER_CONDITION |
CSO_BITS_ALL_SHADERS));
CSO_BIT_MESH_SHADER |
CSO_BITS_VERTEX_PIPE_SHADERS));
cso_set_sample_mask(cso, ~0);
cso_set_min_samples(cso, 1);

View file

@ -1759,7 +1759,8 @@ try_pbo_upload_common(struct gl_context *ctx,
CSO_BIT_SAMPLE_MASK |
CSO_BIT_MIN_SAMPLES |
CSO_BIT_RENDER_CONDITION |
CSO_BITS_ALL_SHADERS));
CSO_BIT_MESH_SHADER |
CSO_BITS_VERTEX_PIPE_SHADERS));
cso_set_sample_mask(cso, ~0);
cso_set_min_samples(cso, 1);
@ -2020,7 +2021,8 @@ try_pbo_download(struct st_context *st,
CSO_BIT_SAMPLE_MASK |
CSO_BIT_MIN_SAMPLES |
CSO_BIT_RENDER_CONDITION |
CSO_BITS_ALL_SHADERS));
CSO_BIT_MESH_SHADER |
CSO_BITS_VERTEX_PIPE_SHADERS));
cso_set_sample_mask(cso, ~0);
cso_set_min_samples(cso, 1);

View file

@ -210,7 +210,6 @@ st_pbo_draw(struct st_context *st, const struct st_pbo_addresses *addr,
cso_set_tesseval_shader_handle(cso, NULL);
cso_set_task_shader_handle(cso, NULL);
cso_set_mesh_shader_handle(cso, NULL);
/* Upload vertices */