summaryrefslogtreecommitdiffstats
path: root/src/intel/vulkan/genX_pipeline_util.h
diff options
context:
space:
mode:
authorKenneth Graunke <[email protected]>2016-02-22 15:23:06 -0800
committerKenneth Graunke <[email protected]>2016-02-24 11:13:02 -0800
commit1024a66fc4ff34a03ecfdf3ec053cb874fb206fe (patch)
treecfee225449cd811dbf232071337884eeb4e7c249 /src/intel/vulkan/genX_pipeline_util.h
parentc9564fd598573f609480f70a141b95900047ba58 (diff)
anv: Emit 3DSTATE_URB_* via a loop.
Rather than keeping separate {vs,hs,ds,gs}_start fields, we now store an array indexed by the shader stage (MESA_SHADER_*). The 3DSTATE_URB_* commands are also sequentially numbered. This makes it easy to just emit them in a loop. This simplifies the code a little, and also will make it easier to add more credible HS and DS code later.
Diffstat (limited to 'src/intel/vulkan/genX_pipeline_util.h')
-rw-r--r--src/intel/vulkan/genX_pipeline_util.h26
1 files changed, 7 insertions, 19 deletions
diff --git a/src/intel/vulkan/genX_pipeline_util.h b/src/intel/vulkan/genX_pipeline_util.h
index 51fbd8bf273..dea96a934b8 100644
--- a/src/intel/vulkan/genX_pipeline_util.h
+++ b/src/intel/vulkan/genX_pipeline_util.h
@@ -210,25 +210,13 @@ emit_urb_setup(struct anv_pipeline *pipeline)
.ConstantBufferOffset = 8,
.ConstantBufferSize = 4);
- anv_batch_emit(&pipeline->batch, GENX(3DSTATE_URB_VS),
- .VSURBStartingAddress = pipeline->urb.vs_start,
- .VSURBEntryAllocationSize = pipeline->urb.vs_size - 1,
- .VSNumberofURBEntries = pipeline->urb.nr_vs_entries);
-
- anv_batch_emit(&pipeline->batch, GENX(3DSTATE_URB_GS),
- .GSURBStartingAddress = pipeline->urb.gs_start,
- .GSURBEntryAllocationSize = pipeline->urb.gs_size - 1,
- .GSNumberofURBEntries = pipeline->urb.nr_gs_entries);
-
- anv_batch_emit(&pipeline->batch, GENX(3DSTATE_URB_HS),
- .HSURBStartingAddress = pipeline->urb.vs_start,
- .HSURBEntryAllocationSize = 0,
- .HSNumberofURBEntries = 0);
-
- anv_batch_emit(&pipeline->batch, GENX(3DSTATE_URB_DS),
- .DSURBStartingAddress = pipeline->urb.vs_start,
- .DSURBEntryAllocationSize = 0,
- .DSNumberofURBEntries = 0);
+ for (int i = MESA_SHADER_VERTEX; i <= MESA_SHADER_GEOMETRY; i++) {
+ anv_batch_emit(&pipeline->batch, GENX(3DSTATE_URB_VS),
+ ._3DCommandSubOpcode = 48 + i,
+ .VSURBStartingAddress = pipeline->urb.start[i],
+ .VSURBEntryAllocationSize = pipeline->urb.size[i] - 1,
+ .VSNumberofURBEntries = pipeline->urb.entries[i]);
+ }
}
static inline uint32_t