anv: Emit 3DSTATE_PUSH_CONSTANT_ALLOC_* via a loop.

Now we're emitting HS and DS packets as well.
This commit is contained in:
Kenneth Graunke
2016-02-22 15:46:23 -08:00
parent 1024a66fc4
commit 7f9b03cc8b
3 changed files with 15 additions and 9 deletions

View File

@@ -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),