diff options
author | Jason Ekstrand <[email protected]> | 2020-01-17 14:14:03 -0600 |
---|---|---|
committer | Jason Ekstrand <[email protected]> | 2020-01-30 18:46:28 -0600 |
commit | e6b39850f092b387881c4fb4260c9465971422aa (patch) | |
tree | 469984e4bd6f76114d1c03dff157ad10f4a14c93 /src/intel/vulkan/genX_pipeline.c | |
parent | ce9c45a60ed51ddb27bd969bdc61336f18121a07 (diff) |
anv: Plumb deref block size through to 3DSTATE_SF
Cc: "20.0" [email protected]
Reviewed-by: Kenneth Graunke <[email protected]>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3454>
Diffstat (limited to 'src/intel/vulkan/genX_pipeline.c')
-rw-r--r-- | src/intel/vulkan/genX_pipeline.c | 22 |
1 files changed, 14 insertions, 8 deletions
diff --git a/src/intel/vulkan/genX_pipeline.c b/src/intel/vulkan/genX_pipeline.c index 2dd4592381d..82c053d91a5 100644 --- a/src/intel/vulkan/genX_pipeline.c +++ b/src/intel/vulkan/genX_pipeline.c @@ -259,7 +259,8 @@ void genX(emit_urb_setup)(struct anv_device *device, struct anv_batch *batch, const struct gen_l3_config *l3_config, VkShaderStageFlags active_stages, - const unsigned entry_size[4]) + const unsigned entry_size[4], + enum gen_urb_deref_block_size *deref_block_size) { const struct gen_device_info *devinfo = &device->info; @@ -269,7 +270,7 @@ genX(emit_urb_setup)(struct anv_device *device, struct anv_batch *batch, active_stages & VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT, active_stages & VK_SHADER_STAGE_GEOMETRY_BIT, - entry_size, entries, start, NULL); + entry_size, entries, start, deref_block_size); #if GEN_GEN == 7 && !GEN_IS_HASWELL /* From the IVB PRM Vol. 2, Part 1, Section 3.2.1: @@ -298,7 +299,8 @@ genX(emit_urb_setup)(struct anv_device *device, struct anv_batch *batch, } static void -emit_urb_setup(struct anv_pipeline *pipeline) +emit_urb_setup(struct anv_pipeline *pipeline, + enum gen_urb_deref_block_size *deref_block_size) { unsigned entry_size[4]; for (int i = MESA_SHADER_VERTEX; i <= MESA_SHADER_GEOMETRY; i++) { @@ -311,7 +313,8 @@ emit_urb_setup(struct anv_pipeline *pipeline) genX(emit_urb_setup)(pipeline->device, &pipeline->batch, pipeline->urb.l3_config, - pipeline->active_stages, entry_size); + pipeline->active_stages, entry_size, + deref_block_size); } static void @@ -565,7 +568,8 @@ emit_rs_state(struct anv_pipeline *pipeline, const VkPipelineMultisampleStateCreateInfo *ms_info, const VkPipelineRasterizationLineStateCreateInfoEXT *line_info, const struct anv_render_pass *pass, - const struct anv_subpass *subpass) + const struct anv_subpass *subpass, + enum gen_urb_deref_block_size urb_deref_block_size) { struct GENX(3DSTATE_SF) sf = { GENX(3DSTATE_SF_header), @@ -584,7 +588,7 @@ emit_rs_state(struct anv_pipeline *pipeline, #endif #if GEN_GEN >= 12 - sf.DerefBlockSize = PerPolyDerefMode; + sf.DerefBlockSize = urb_deref_block_size; #endif const struct brw_vue_prog_data *last_vue_prog_data = @@ -2144,14 +2148,16 @@ genX(graphics_pipeline_create)( vk_find_struct_const(pCreateInfo->pRasterizationState->pNext, PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_EXT); - emit_urb_setup(pipeline); + enum gen_urb_deref_block_size urb_deref_block_size; + emit_urb_setup(pipeline, &urb_deref_block_size); assert(pCreateInfo->pVertexInputState); emit_vertex_input(pipeline, pCreateInfo->pVertexInputState); assert(pCreateInfo->pRasterizationState); emit_rs_state(pipeline, pCreateInfo->pInputAssemblyState, pCreateInfo->pRasterizationState, - ms_info, line_info, pass, subpass); + ms_info, line_info, pass, subpass, + urb_deref_block_size); emit_ms_state(pipeline, ms_info); emit_ds_state(pipeline, ds_info, pass, subpass); emit_cb_state(pipeline, cb_info, ms_info); |