anv/nir: Rework arguments to apply_pipeline_layout
authorJason Ekstrand <jason.ekstrand@intel.com>
Wed, 21 Nov 2018 23:19:37 +0000 (17:19 -0600)
committerJason Ekstrand <jason.ekstrand@intel.com>
Thu, 22 Nov 2018 15:17:28 +0000 (09:17 -0600)
Instead of taking a whole pipeline (which could be anything!), just take
a physical device and robust_buffer_access boolean.  This makes it
easier to verify that only the things in the hash actually affect
pipeline compilation.

Reviewed-by: Iago Toral Quiroga <itoral@igalia.com>
src/intel/vulkan/anv_nir.h
src/intel/vulkan/anv_nir_apply_pipeline_layout.c
src/intel/vulkan/anv_pipeline.c

index cf90c90f857932bf58dc5205fdd33b2387198d5b..dd6c89529acb13e7c5ac3d30e5dfd3b50df0f000 100644 (file)
@@ -40,7 +40,8 @@ bool anv_nir_lower_multiview(nir_shader *shader, uint32_t view_mask);
 bool anv_nir_lower_ycbcr_textures(nir_shader *shader,
                                   struct anv_pipeline_layout *layout);
 
-void anv_nir_apply_pipeline_layout(struct anv_pipeline *pipeline,
+void anv_nir_apply_pipeline_layout(const struct anv_physical_device *pdevice,
+                                   bool robust_buffer_access,
                                    struct anv_pipeline_layout *layout,
                                    nir_shader *shader,
                                    struct brw_stage_prog_data *prog_data,
index fa967c217e7b0088d317f001639e980c308a656e..4e405ae4bb0bc9abb4b06893b2d4d7f7d7842cbe 100644 (file)
@@ -423,7 +423,8 @@ setup_vec4_uniform_value(uint32_t *params, uint32_t offset, unsigned n)
 }
 
 void
-anv_nir_apply_pipeline_layout(struct anv_pipeline *pipeline,
+anv_nir_apply_pipeline_layout(const struct anv_physical_device *pdevice,
+                              bool robust_buffer_access,
                               struct anv_pipeline_layout *layout,
                               nir_shader *shader,
                               struct brw_stage_prog_data *prog_data,
@@ -434,7 +435,7 @@ anv_nir_apply_pipeline_layout(struct anv_pipeline *pipeline,
    struct apply_pipeline_layout_state state = {
       .shader = shader,
       .layout = layout,
-      .add_bounds_checks = pipeline->device->robust_buffer_access,
+      .add_bounds_checks = robust_buffer_access,
    };
 
    void *mem_ctx = ralloc_context(NULL);
index f170366d0300939b32e9d9964a891bdbe63c259a..ee37685fccff50dc4dee96b7520156a217dbd30f 100644 (file)
@@ -532,7 +532,9 @@ anv_pipeline_lower_nir(struct anv_pipeline *pipeline,
 
    /* Apply the actual pipeline layout to UBOs, SSBOs, and textures */
    if (layout) {
-      anv_nir_apply_pipeline_layout(pipeline, layout, nir, prog_data,
+      anv_nir_apply_pipeline_layout(&pipeline->device->instance->physicalDevice,
+                                    pipeline->device->robust_buffer_access,
+                                    layout, nir, prog_data,
                                     &stage->bind_map);
    }