llvmpipe: convert a bunch of shader_type ifs to switches.

This makes it easier to add mesh shader support later

Reviewed-by: Brian Paul <brianp@vmware.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/23065>
This commit is contained in:
Dave Airlie
2023-05-17 06:42:32 +10:00
committed by Marge Bot
parent 7c84ca2305
commit 502cd6a2ca
2 changed files with 67 additions and 31 deletions

View File

@@ -4196,11 +4196,11 @@ llvmpipe_set_constant_buffer(struct pipe_context *pipe,
}
}
if (shader == PIPE_SHADER_VERTEX ||
shader == PIPE_SHADER_GEOMETRY ||
shader == PIPE_SHADER_TESS_CTRL ||
shader == PIPE_SHADER_TESS_EVAL) {
/* Pass the constants to the 'draw' module */
switch (shader) {
case PIPE_SHADER_VERTEX:
case PIPE_SHADER_GEOMETRY:
case PIPE_SHADER_TESS_CTRL:
case PIPE_SHADER_TESS_EVAL: {
const unsigned size = cb ? cb->buffer_size : 0;
const ubyte *data = NULL;
@@ -4211,10 +4211,17 @@ llvmpipe_set_constant_buffer(struct pipe_context *pipe,
draw_set_mapped_constant_buffer(llvmpipe->draw, shader,
index, data, size);
} else if (shader == PIPE_SHADER_COMPUTE) {
break;
}
case PIPE_SHADER_COMPUTE:
llvmpipe->cs_dirty |= LP_CSNEW_CONSTANTS;
} else {
break;
case PIPE_SHADER_FRAGMENT:
llvmpipe->dirty |= LP_NEW_FS_CONSTANTS;
break;
default:
unreachable("Illegal shader type");
break;
}
}
@@ -4240,10 +4247,11 @@ llvmpipe_set_shader_buffers(struct pipe_context *pipe,
false, "buffer");
}
if (shader == PIPE_SHADER_VERTEX ||
shader == PIPE_SHADER_GEOMETRY ||
shader == PIPE_SHADER_TESS_CTRL ||
shader == PIPE_SHADER_TESS_EVAL) {
switch (shader) {
case PIPE_SHADER_VERTEX:
case PIPE_SHADER_GEOMETRY:
case PIPE_SHADER_TESS_CTRL:
case PIPE_SHADER_TESS_EVAL: {
const unsigned size = buffer ? buffer->buffer_size : 0;
const ubyte *data = NULL;
if (buffer && buffer->buffer)
@@ -4252,12 +4260,19 @@ llvmpipe_set_shader_buffers(struct pipe_context *pipe,
data += buffer->buffer_offset;
draw_set_mapped_shader_buffer(llvmpipe->draw, shader,
i, data, size);
} else if (shader == PIPE_SHADER_COMPUTE) {
break;
}
case PIPE_SHADER_COMPUTE:
llvmpipe->cs_dirty |= LP_CSNEW_SSBOS;
} else if (shader == PIPE_SHADER_FRAGMENT) {
break;
case PIPE_SHADER_FRAGMENT:
llvmpipe->fs_ssbo_write_mask &= ~(((1 << count) - 1) << start_slot);
llvmpipe->fs_ssbo_write_mask |= writable_bitmask << start_slot;
llvmpipe->dirty |= LP_NEW_FS_SSBOS;
break;
default:
unreachable("Illegal shader type");
break;
}
}
}
@@ -4286,16 +4301,23 @@ llvmpipe_set_shader_images(struct pipe_context *pipe,
}
llvmpipe->num_images[shader] = start_slot + count;
if (shader == PIPE_SHADER_VERTEX ||
shader == PIPE_SHADER_GEOMETRY ||
shader == PIPE_SHADER_TESS_CTRL ||
shader == PIPE_SHADER_TESS_EVAL) {
switch (shader) {
case PIPE_SHADER_VERTEX:
case PIPE_SHADER_GEOMETRY:
case PIPE_SHADER_TESS_CTRL:
case PIPE_SHADER_TESS_EVAL:
draw_set_images(llvmpipe->draw, shader, llvmpipe->images[shader],
start_slot + count);
} else if (shader == PIPE_SHADER_COMPUTE) {
break;
case PIPE_SHADER_COMPUTE:
llvmpipe->cs_dirty |= LP_CSNEW_IMAGES;
} else {
break;
case PIPE_SHADER_FRAGMENT:
llvmpipe->dirty |= LP_NEW_FS_IMAGES;
break;
default:
unreachable("Illegal shader type");
break;
}
if (unbind_num_trailing_slots) {

View File

@@ -96,18 +96,25 @@ llvmpipe_bind_sampler_states(struct pipe_context *pipe,
llvmpipe->num_samplers[shader] = j;
}
if (shader == PIPE_SHADER_VERTEX ||
shader == PIPE_SHADER_GEOMETRY ||
shader == PIPE_SHADER_TESS_CTRL ||
shader == PIPE_SHADER_TESS_EVAL) {
switch (shader) {
case PIPE_SHADER_VERTEX:
case PIPE_SHADER_GEOMETRY:
case PIPE_SHADER_TESS_CTRL:
case PIPE_SHADER_TESS_EVAL:
draw_set_samplers(llvmpipe->draw,
shader,
llvmpipe->samplers[shader],
llvmpipe->num_samplers[shader]);
} else if (shader == PIPE_SHADER_COMPUTE) {
break;
case PIPE_SHADER_COMPUTE:
llvmpipe->cs_dirty |= LP_CSNEW_SAMPLER;
} else {
break;
case PIPE_SHADER_FRAGMENT:
llvmpipe->dirty |= LP_NEW_SAMPLER;
break;
default:
unreachable("Illegal shader type");
break;
}
}
@@ -174,21 +181,28 @@ llvmpipe_set_sampler_views(struct pipe_context *pipe,
llvmpipe->num_sampler_views[shader] = j;
}
if (shader == PIPE_SHADER_VERTEX ||
shader == PIPE_SHADER_GEOMETRY ||
shader == PIPE_SHADER_TESS_CTRL ||
shader == PIPE_SHADER_TESS_EVAL) {
switch (shader) {
case PIPE_SHADER_VERTEX:
case PIPE_SHADER_GEOMETRY:
case PIPE_SHADER_TESS_CTRL:
case PIPE_SHADER_TESS_EVAL:
draw_set_sampler_views(llvmpipe->draw,
shader,
llvmpipe->sampler_views[shader],
llvmpipe->num_sampler_views[shader]);
} else if (shader == PIPE_SHADER_COMPUTE) {
break;
case PIPE_SHADER_COMPUTE:
llvmpipe->cs_dirty |= LP_CSNEW_SAMPLER_VIEW;
} else if (shader == PIPE_SHADER_FRAGMENT) {
break;
case PIPE_SHADER_FRAGMENT:
llvmpipe->dirty |= LP_NEW_SAMPLER_VIEW;
lp_setup_set_fragment_sampler_views(llvmpipe->setup,
llvmpipe->num_sampler_views[PIPE_SHADER_FRAGMENT],
llvmpipe->sampler_views[PIPE_SHADER_FRAGMENT]);
break;
default:
unreachable("Illegal shader type");
break;
}
}