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