<div dir="ltr">LGTM<br></div><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Jul 13, 2016 at 4:36 PM, Nanley Chery <span dir="ltr"><<a href="mailto:nanleychery@gmail.com" target="_blank">nanleychery@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">Section 13.2.3. of the Vulkan spec requires that implementations be able to<br>
bind sparsely-defined Descriptor Sets without any errors or exceptions.<br>
<br>
When binding a descriptor set that contains a dynamic buffer binding/descriptor,<br>
the driver attempts to dereference the descriptor's buffer_view field if it is<br>
non-NULL. It currently segfaults on undefined descriptors as this field is never<br>
zero-initialized. Zero undefined descriptors to avoid segfaulting. This<br>
solution was suggested by Jason Ekstrand.<br>
<br>
Bugzilla: <a href="https://bugs.freedesktop.org/show_bug.cgi?id=96850" rel="noreferrer" target="_blank">https://bugs.freedesktop.org/show_bug.cgi?id=96850</a><br>
Cc: 12.0 <<a href="mailto:mesa-stable@lists.freedesktop.org">mesa-stable@lists.freedesktop.org</a>><br>
Signed-off-by: Nanley Chery <<a href="mailto:nanley.g.chery@intel.com">nanley.g.chery@intel.com</a>><br>
---<br>
<br>
</span>v3: memset all descriptors in the DescriptorSet (Jason Ekstrand)<br>
<br>
 src/intel/vulkan/anv_descriptor_set.c | 5 +++++<br>
 1 file changed, 5 insertions(+)<br>
<br>
diff --git a/src/intel/vulkan/anv_descriptor_set.c b/src/intel/vulkan/anv_descriptor_set.c<br>
index 448ae0e..bd3ebed 100644<br>
--- a/src/intel/vulkan/anv_descriptor_set.c<br>
+++ b/src/intel/vulkan/anv_descriptor_set.c<br>
@@ -409,6 +409,11 @@ anv_descriptor_set_create(struct anv_device *device,<br>
       (struct anv_buffer_view *) &set->descriptors[layout->size];<br>
    set->buffer_count = layout->buffer_count;<br>
<span class=""><br>
+   /* By defining the descriptors to be zero now, we can later verify that<br>
</span>+    * a descriptor has not been populated with user data.<br>
+    */<br>
+   memset(set->descriptors, 0, sizeof(struct anv_descriptor) * layout->size);<br>
+<br>
<div class="HOEnZb"><div class="h5">    /* Go through and fill out immutable samplers if we have any */<br>
    struct anv_descriptor *desc = set->descriptors;<br>
    for (uint32_t b = 0; b < layout->binding_count; b++) {<br>
</div></div><span class="HOEnZb"><font color="#888888">--<br>
2.9.0<br>
<br>
</font></span></blockquote></div><br></div>