This will be used by bindless to initialize the descriptor for
both samplers and images.

Signed-off-by: Samuel Pitoiset <samuel.pitoi...@gmail.com>
---
 src/gallium/drivers/radeonsi/si_descriptors.c | 26 +++++++++++++++++---------
 1 file changed, 17 insertions(+), 9 deletions(-)

diff --git a/src/gallium/drivers/radeonsi/si_descriptors.c 
b/src/gallium/drivers/radeonsi/si_descriptors.c
index d106351c85..84da830c11 100644
--- a/src/gallium/drivers/radeonsi/si_descriptors.c
+++ b/src/gallium/drivers/radeonsi/si_descriptors.c
@@ -96,6 +96,21 @@ static uint32_t null_image_descriptor[8] = {
         * descriptor */
 };
 
+static void si_init_descriptor_list(uint32_t *desc_list,
+                                   unsigned element_dw_size,
+                                   unsigned num_elements,
+                                   const uint32_t *null_descriptor)
+{
+       int i;
+
+       /* Initialize the array to NULL descriptors if the element size is 8. */
+       if (null_descriptor) {
+               assert(element_dw_size % 8 == 0);
+               for (i = 0; i < num_elements * element_dw_size / 8; i++)
+                       memcpy(desc_list + i * 8, null_descriptor, 8 * 4);
+       }
+}
+
 static void si_init_descriptors(struct si_descriptors *desc,
                                unsigned shader_userdata_index,
                                unsigned element_dw_size,
@@ -103,8 +118,6 @@ static void si_init_descriptors(struct si_descriptors *desc,
                                const uint32_t *null_descriptor,
                                unsigned *ce_offset)
 {
-       int i;
-
        assert(num_elements <= sizeof(desc->dirty_mask)*8);
 
        desc->list = CALLOC(num_elements, element_dw_size * 4);
@@ -121,13 +134,8 @@ static void si_init_descriptors(struct si_descriptors 
*desc,
                *ce_offset += align(element_dw_size * num_elements * 4, 32);
        }
 
-       /* Initialize the array to NULL descriptors if the element size is 8. */
-       if (null_descriptor) {
-               assert(element_dw_size % 8 == 0);
-               for (i = 0; i < num_elements * element_dw_size / 8; i++)
-                       memcpy(desc->list + i * 8, null_descriptor,
-                              8 * 4);
-       }
+       si_init_descriptor_list(desc->list, element_dw_size, num_elements,
+                               null_descriptor);
 }
 
 static void si_release_descriptors(struct si_descriptors *desc)
-- 
2.12.1

_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to