<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/138273>138273</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            [HLSL][SPIRV] Modify the VulkanBuffer implementation to take a struct
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            HLSL,
            backend:SPIR-V
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
            s-perron
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          s-perron
      </td>
    </tr>
</table>

<pre>
    The current implementation of the the `spirv.VulkanBuffer` type assumes that the element type can be anything, and will wrap it new struct, which will be decorated with the block decoration. This means that the struct decorated with `block` can have only one member.

This does not work well for CBuffers in HLSL, which can have multiple members in the struct.

- [ ] Update the [design doc](https://github.com/llvm/wg-hlsl/blob/main/proposals/0018-spirv-resource-representation.md).
- [ ] Update the implementation in llvm-project.
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJyEU8GK4zgQ_Rr5UtjI5ShODj4kHcwu9MKy3dt3Sa7EmsiSkeSE_P1gJ5luGoY5GIOq3qun91QyRnNyRA0Te4YY85FC8I4hMnHI5JR6H5rnaaZ8d2veewI9hUAugRlGSwO5JJPxDvwRUk_Lx9Y8jiZcio_JnqXbT8cjBbbmkG4jgYxxGihC6mVa2ulOc69q6UARSHdLvXEnhi8gXQdXYy1cgxzBJHB0hZjCpNNcvvZG9_cGRdCR9kEmmiGpX_iV9fr8LBjvCnjvTYSBpPui4k74Hc_WfIHP6mdpvbwQeGdv4B3BQIOiUDC-Y3y3kHaeIjif4OrDGa5kLRx9gJe7BxGMg79e314_df8iHSabzGifpEvrp67HjByY2AMTB_h_7GR62C32Hc1RQuc1EweGmz6lMbJqx7Bl2J5M6idVaD8wbK29zL_rKe9ttAxbZb1i2A7SOIbtGPzoo7SRYct5ucmXJPNA0U9BUx5oDBSfqRdDx3Bb_E7ZtydiHMzT8zH4H6RTkXVN1W2rrcyoKevVutxiWZdZ32y0rFe1qvhGHJXulD6uhRS8IpS1qAXPTIMcBRccywpR8KJGLVZab8uKY6fEhq04DdLYYh5Y-HDKTIwTNWW1wbrKrFRk4-Ph3wNBhi8MUUl9Jtexavf279__5R-PbQjNolxNp8hW3JqY4id1MskuW7QwiQMT-xn8Mbvxj-_M8ba48XUbvluTPCR5JpCPvLMp2ObPKX61k2G73HFO7nHNS4M_AwAA__83M0tQ">