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.start[MESA_SHADER_TESS_EVAL] = push_constant_chunks;
|
||||||
pipeline->urb.size[MESA_SHADER_TESS_EVAL] = 1;
|
pipeline->urb.size[MESA_SHADER_TESS_EVAL] = 1;
|
||||||
pipeline->urb.entries[MESA_SHADER_TESS_EVAL] = 0;
|
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
|
static void
|
||||||
|
|
|
@ -1410,6 +1410,7 @@ struct anv_pipeline {
|
||||||
uint32_t scratch_start[MESA_SHADER_STAGES];
|
uint32_t scratch_start[MESA_SHADER_STAGES];
|
||||||
uint32_t total_scratch;
|
uint32_t total_scratch;
|
||||||
struct {
|
struct {
|
||||||
|
uint8_t push_size[MESA_SHADER_FRAGMENT + 1];
|
||||||
uint32_t start[MESA_SHADER_GEOMETRY + 1];
|
uint32_t start[MESA_SHADER_GEOMETRY + 1];
|
||||||
uint32_t size[MESA_SHADER_GEOMETRY + 1];
|
uint32_t size[MESA_SHADER_GEOMETRY + 1];
|
||||||
uint32_t entries[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 });
|
.Address = { &device->workaround_bo, 0 });
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
anv_batch_emit(&pipeline->batch, GENX(3DSTATE_PUSH_CONSTANT_ALLOC_VS),
|
unsigned push_start = 0;
|
||||||
.ConstantBufferOffset = 0,
|
for (int i = MESA_SHADER_VERTEX; i <= MESA_SHADER_FRAGMENT; i++) {
|
||||||
.ConstantBufferSize = 4);
|
anv_batch_emit(&pipeline->batch, GENX(3DSTATE_PUSH_CONSTANT_ALLOC_VS),
|
||||||
anv_batch_emit(&pipeline->batch, GENX(3DSTATE_PUSH_CONSTANT_ALLOC_GS),
|
._3DCommandSubOpcode = 18 + i,
|
||||||
.ConstantBufferOffset = 4,
|
.ConstantBufferOffset = push_start,
|
||||||
.ConstantBufferSize = 4);
|
.ConstantBufferSize = pipeline->urb.push_size[i]);
|
||||||
anv_batch_emit(&pipeline->batch, GENX(3DSTATE_PUSH_CONSTANT_ALLOC_PS),
|
push_start += pipeline->urb.push_size[i];
|
||||||
.ConstantBufferOffset = 8,
|
}
|
||||||
.ConstantBufferSize = 4);
|
|
||||||
|
|
||||||
for (int i = MESA_SHADER_VERTEX; i <= MESA_SHADER_GEOMETRY; i++) {
|
for (int i = MESA_SHADER_VERTEX; i <= MESA_SHADER_GEOMETRY; i++) {
|
||||||
anv_batch_emit(&pipeline->batch, GENX(3DSTATE_URB_VS),
|
anv_batch_emit(&pipeline->batch, GENX(3DSTATE_URB_VS),
|
||||||
|
|
Loading…
Reference in New Issue