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:
@@ -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) {
|
||||
|
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user