Mesa (master): turnip: Set has_gs in ir3_shader_key

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Tue Apr 7 14:48:15 UTC 2020


Module: Mesa
Branch: master
Commit: 1af71bee734da7d87e0ef1b71a64e12fa81ed92e
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=1af71bee734da7d87e0ef1b71a64e12fa81ed92e

Author: Brian Ho <brian at brkho.com>
Date:   Wed Apr  1 09:01:52 2020 -0700

turnip: Set has_gs in ir3_shader_key

The ir3 compiler only lowers the VS and GS for geometry shading if
the corresponding has_gs key is set in the shader key. Without it,
GS-specific intrinsics like load_per_vertex_input won't get lowered
and the GS header will be initialized with invalid values.

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4436>

---

 src/freedreno/vulkan/tu_shader.c | 14 ++++++++++++--
 1 file changed, 12 insertions(+), 2 deletions(-)

diff --git a/src/freedreno/vulkan/tu_shader.c b/src/freedreno/vulkan/tu_shader.c
index 1deb19d45ee..51e1c65177c 100644
--- a/src/freedreno/vulkan/tu_shader.c
+++ b/src/freedreno/vulkan/tu_shader.c
@@ -573,9 +573,19 @@ tu_shader_compile_options_init(
    struct tu_shader_compile_options *options,
    const VkGraphicsPipelineCreateInfo *pipeline_info)
 {
-   *options = (struct tu_shader_compile_options) {
-      /* TODO ir3_key */
+   bool has_gs = false;
+   for (uint32_t i = 0; i < pipeline_info->stageCount; i++) {
+      if (pipeline_info->pStages[i].stage == VK_SHADER_STAGE_GEOMETRY_BIT) {
+         has_gs = true;
+         break;
+      }
+   }
 
+   *options = (struct tu_shader_compile_options) {
+      /* TODO: Populate the remaining fields of ir3_shader_key. */
+      .key = {
+         .has_gs = has_gs,
+      },
       /* TODO: VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT
        * some optimizations need to happen otherwise shader might not compile
        */



More information about the mesa-commit mailing list