v3dv/cmd_bufffer: rename and split emit_graphics_pipeline
The name suggests that this method emits the full graphics pipeline, but that is not the case (ie: scissor is emitted at a different point). Right now that method is mostly emitting the gl_shader state plus some other packets. So we just renamed it to emit_gl_shader_state, and move the other packet emission to new emission methods. Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6766>
This commit is contained in:
parent
6bd4e69e9c
commit
e903075335
|
@ -2165,7 +2165,49 @@ emit_varying_flags(struct v3dv_job *job,
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
emit_graphics_pipeline(struct v3dv_cmd_buffer *cmd_buffer)
|
emit_varyings_state(struct v3dv_cmd_buffer *cmd_buffer)
|
||||||
|
{
|
||||||
|
struct v3dv_job *job = cmd_buffer->state.job;
|
||||||
|
struct v3dv_pipeline *pipeline = cmd_buffer->state.pipeline;
|
||||||
|
|
||||||
|
const uint32_t num_flags =
|
||||||
|
ARRAY_SIZE(pipeline->fs->prog_data.fs->flat_shade_flags);
|
||||||
|
const uint32_t *flat_shade_flags =
|
||||||
|
pipeline->fs->prog_data.fs->flat_shade_flags;
|
||||||
|
const uint32_t *noperspective_flags =
|
||||||
|
pipeline->fs->prog_data.fs->noperspective_flags;
|
||||||
|
const uint32_t *centroid_flags =
|
||||||
|
pipeline->fs->prog_data.fs->centroid_flags;
|
||||||
|
|
||||||
|
if (!emit_varying_flags(job, num_flags, flat_shade_flags,
|
||||||
|
emit_flat_shade_flags)) {
|
||||||
|
cl_emit(&job->bcl, ZERO_ALL_FLAT_SHADE_FLAGS, flags);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!emit_varying_flags(job, num_flags, noperspective_flags,
|
||||||
|
emit_noperspective_flags)) {
|
||||||
|
cl_emit(&job->bcl, ZERO_ALL_NON_PERSPECTIVE_FLAGS, flags);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!emit_varying_flags(job, num_flags, centroid_flags,
|
||||||
|
emit_centroid_flags)) {
|
||||||
|
cl_emit(&job->bcl, ZERO_ALL_CENTROID_FLAGS, flags);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
emit_configuration_bits(struct v3dv_cmd_buffer *cmd_buffer)
|
||||||
|
{
|
||||||
|
struct v3dv_job *job = cmd_buffer->state.job;
|
||||||
|
struct v3dv_pipeline *pipeline = cmd_buffer->state.pipeline;
|
||||||
|
|
||||||
|
cl_emit_with_prepacked(&job->bcl, CFG_BITS, pipeline->cfg_bits, config) {
|
||||||
|
config.early_z_updates_enable = job->ez_state != VC5_EZ_DISABLED;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
emit_gl_shader_state(struct v3dv_cmd_buffer *cmd_buffer)
|
||||||
{
|
{
|
||||||
struct v3dv_job *job = cmd_buffer->state.job;
|
struct v3dv_job *job = cmd_buffer->state.job;
|
||||||
assert(job);
|
assert(job);
|
||||||
|
@ -2295,34 +2337,6 @@ emit_graphics_pipeline(struct v3dv_cmd_buffer *cmd_buffer)
|
||||||
state.number_of_attribute_arrays = num_elements_to_emit;
|
state.number_of_attribute_arrays = num_elements_to_emit;
|
||||||
}
|
}
|
||||||
|
|
||||||
cl_emit_with_prepacked(&job->bcl, CFG_BITS, pipeline->cfg_bits, config) {
|
|
||||||
config.early_z_updates_enable = job->ez_state != VC5_EZ_DISABLED;
|
|
||||||
}
|
|
||||||
|
|
||||||
const uint32_t num_flags =
|
|
||||||
ARRAY_SIZE(pipeline->fs->prog_data.fs->flat_shade_flags);
|
|
||||||
const uint32_t *flat_shade_flags =
|
|
||||||
pipeline->fs->prog_data.fs->flat_shade_flags;
|
|
||||||
const uint32_t *noperspective_flags =
|
|
||||||
pipeline->fs->prog_data.fs->noperspective_flags;
|
|
||||||
const uint32_t *centroid_flags =
|
|
||||||
pipeline->fs->prog_data.fs->centroid_flags;
|
|
||||||
|
|
||||||
if (!emit_varying_flags(job, num_flags, flat_shade_flags,
|
|
||||||
emit_flat_shade_flags)) {
|
|
||||||
cl_emit(&job->bcl, ZERO_ALL_FLAT_SHADE_FLAGS, flags);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!emit_varying_flags(job, num_flags, noperspective_flags,
|
|
||||||
emit_noperspective_flags)) {
|
|
||||||
cl_emit(&job->bcl, ZERO_ALL_NON_PERSPECTIVE_FLAGS, flags);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!emit_varying_flags(job, num_flags, centroid_flags,
|
|
||||||
emit_centroid_flags)) {
|
|
||||||
cl_emit(&job->bcl, ZERO_ALL_CENTROID_FLAGS, flags);
|
|
||||||
}
|
|
||||||
|
|
||||||
cmd_buffer->state.dirty &= ~(V3DV_CMD_DIRTY_VERTEX_BUFFER |
|
cmd_buffer->state.dirty &= ~(V3DV_CMD_DIRTY_VERTEX_BUFFER |
|
||||||
V3DV_CMD_DIRTY_DESCRIPTOR_SETS |
|
V3DV_CMD_DIRTY_DESCRIPTOR_SETS |
|
||||||
V3DV_CMD_DIRTY_PUSH_CONSTANTS);
|
V3DV_CMD_DIRTY_PUSH_CONSTANTS);
|
||||||
|
@ -2433,7 +2447,9 @@ cmd_buffer_emit_pre_draw(struct v3dv_cmd_buffer *cmd_buffer)
|
||||||
V3DV_CMD_DIRTY_VERTEX_BUFFER |
|
V3DV_CMD_DIRTY_VERTEX_BUFFER |
|
||||||
V3DV_CMD_DIRTY_DESCRIPTOR_SETS |
|
V3DV_CMD_DIRTY_DESCRIPTOR_SETS |
|
||||||
V3DV_CMD_DIRTY_PUSH_CONSTANTS)) {
|
V3DV_CMD_DIRTY_PUSH_CONSTANTS)) {
|
||||||
emit_graphics_pipeline(cmd_buffer);
|
emit_gl_shader_state(cmd_buffer);
|
||||||
|
emit_configuration_bits(cmd_buffer);
|
||||||
|
emit_varyings_state(cmd_buffer);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (*dirty & (V3DV_CMD_DIRTY_VIEWPORT | V3DV_CMD_DIRTY_SCISSOR)) {
|
if (*dirty & (V3DV_CMD_DIRTY_VIEWPORT | V3DV_CMD_DIRTY_SCISSOR)) {
|
||||||
|
|
Loading…
Reference in New Issue