anv: Emit 3DSTATE_PUSH_CONSTANT_ALLOC_* via a loop.
Now we're emitting HS and DS packets as well.
This commit is contained in:
parent
1024a66fc4
commit
7f9b03cc8b
|
@ -885,6 +885,12 @@ gen7_compute_urb_partition(struct anv_pipeline *pipeline)
|
|||
pipeline->urb.start[MESA_SHADER_TESS_EVAL] = push_constant_chunks;
|
||||
pipeline->urb.size[MESA_SHADER_TESS_EVAL] = 1;
|
||||
pipeline->urb.entries[MESA_SHADER_TESS_EVAL] = 0;
|
||||
|
||||
pipeline->urb.push_size[MESA_SHADER_VERTEX] = 4;
|
||||
pipeline->urb.push_size[MESA_SHADER_TESS_CTRL] = 0;
|
||||
pipeline->urb.push_size[MESA_SHADER_TESS_EVAL] = 0;
|
||||
pipeline->urb.push_size[MESA_SHADER_GEOMETRY] = 4;
|
||||
pipeline->urb.push_size[MESA_SHADER_FRAGMENT] = 4;
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
|
@ -1410,6 +1410,7 @@ struct anv_pipeline {
|
|||
uint32_t scratch_start[MESA_SHADER_STAGES];
|
||||
uint32_t total_scratch;
|
||||
struct {
|
||||
uint8_t push_size[MESA_SHADER_FRAGMENT + 1];
|
||||
uint32_t start[MESA_SHADER_GEOMETRY + 1];
|
||||
uint32_t size[MESA_SHADER_GEOMETRY + 1];
|
||||
uint32_t entries[MESA_SHADER_GEOMETRY + 1];
|
||||
|
|
|
@ -200,15 +200,14 @@ emit_urb_setup(struct anv_pipeline *pipeline)
|
|||
.Address = { &device->workaround_bo, 0 });
|
||||
#endif
|
||||
|
||||
anv_batch_emit(&pipeline->batch, GENX(3DSTATE_PUSH_CONSTANT_ALLOC_VS),
|
||||
.ConstantBufferOffset = 0,
|
||||
.ConstantBufferSize = 4);
|
||||
anv_batch_emit(&pipeline->batch, GENX(3DSTATE_PUSH_CONSTANT_ALLOC_GS),
|
||||
.ConstantBufferOffset = 4,
|
||||
.ConstantBufferSize = 4);
|
||||
anv_batch_emit(&pipeline->batch, GENX(3DSTATE_PUSH_CONSTANT_ALLOC_PS),
|
||||
.ConstantBufferOffset = 8,
|
||||
.ConstantBufferSize = 4);
|
||||
unsigned push_start = 0;
|
||||
for (int i = MESA_SHADER_VERTEX; i <= MESA_SHADER_FRAGMENT; i++) {
|
||||
anv_batch_emit(&pipeline->batch, GENX(3DSTATE_PUSH_CONSTANT_ALLOC_VS),
|
||||
._3DCommandSubOpcode = 18 + i,
|
||||
.ConstantBufferOffset = push_start,
|
||||
.ConstantBufferSize = pipeline->urb.push_size[i]);
|
||||
push_start += pipeline->urb.push_size[i];
|
||||
}
|
||||
|
||||
for (int i = MESA_SHADER_VERTEX; i <= MESA_SHADER_GEOMETRY; i++) {
|
||||
anv_batch_emit(&pipeline->batch, GENX(3DSTATE_URB_VS),
|
||||
|
|
Loading…
Reference in New Issue