Module: Mesa
Branch: vulkan
Commit: e0565f40ea7f1653318a3e33cfeb46dcdbfd28ae
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=e0565f40ea7f1653318a3e33cfeb46dcdbfd28ae

Author: Jason Ekstrand <[email protected]>
Date:   Thu Feb 18 11:44:26 2016 -0800

anv/pipeline: Use nir's num_images for allocating image_params

---

 src/intel/vulkan/anv_nir_apply_pipeline_layout.c | 5 ++++-
 src/intel/vulkan/anv_pipeline.c                  | 5 ++---
 2 files changed, 6 insertions(+), 4 deletions(-)

diff --git a/src/intel/vulkan/anv_nir_apply_pipeline_layout.c 
b/src/intel/vulkan/anv_nir_apply_pipeline_layout.c
index 4600872..4be630b 100644
--- a/src/intel/vulkan/anv_nir_apply_pipeline_layout.c
+++ b/src/intel/vulkan/anv_nir_apply_pipeline_layout.c
@@ -280,6 +280,7 @@ anv_nir_apply_pipeline_layout(struct anv_pipeline *pipeline,
    struct anv_pipeline_bind_map map = {
       .surface_count = 0,
       .sampler_count = 0,
+      .image_count = 0,
    };
 
    for (uint32_t set = 0; set < layout->num_sets; set++) {
@@ -351,6 +352,7 @@ anv_nir_apply_pipeline_layout(struct anv_pipeline *pipeline,
    }
 
    if (map.image_count > 0) {
+      assert(map.image_count <= MAX_IMAGES);
       nir_foreach_variable(var, &shader->uniforms) {
          if (glsl_type_is_image(var->type) ||
              (glsl_type_is_array(var->type) &&
@@ -369,7 +371,8 @@ anv_nir_apply_pipeline_layout(struct anv_pipeline *pipeline,
       }
 
       struct anv_push_constants *null_data = NULL;
-      const gl_constant_value **param = prog_data->param + 
shader->num_uniforms;
+      const gl_constant_value **param =
+         prog_data->param + (shader->num_uniforms / 4);
       const struct brw_image_param *image_param = null_data->images;
       for (uint32_t i = 0; i < map.image_count; i++) {
          setup_vec4_uniform_value(param + BRW_IMAGE_PARAM_SURFACE_IDX_OFFSET,
diff --git a/src/intel/vulkan/anv_pipeline.c b/src/intel/vulkan/anv_pipeline.c
index 2f1ce39..27872d2 100644
--- a/src/intel/vulkan/anv_pipeline.c
+++ b/src/intel/vulkan/anv_pipeline.c
@@ -341,9 +341,8 @@ anv_pipeline_compile(struct anv_pipeline *pipeline,
    if (pipeline->layout && pipeline->layout->stage[stage].has_dynamic_offsets)
       prog_data->nr_params += MAX_DYNAMIC_BUFFERS * 2;
 
-   if (pipeline->bindings[stage].image_count > 0)
-      prog_data->nr_params += pipeline->bindings[stage].image_count *
-                              BRW_IMAGE_PARAM_SIZE;
+   if (nir->info.num_images > 0)
+      prog_data->nr_params += nir->info.num_images * BRW_IMAGE_PARAM_SIZE;
 
    if (prog_data->nr_params > 0) {
       /* XXX: I think we're leaking this */

_______________________________________________
mesa-commit mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/mesa-commit

Reply via email to