Mesa (main): anv: Process FS last when compiling graphics pipeline
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Wed Nov 3 17:45:49 UTC 2021
Module: Mesa
Branch: main
Commit: 71022a53e415fa8c16567884c414eb361dee1214
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=71022a53e415fa8c16567884c414eb361dee1214
Author: Caio Marcelo de Oliveira Filho <caio.oliveira at intel.com>
Date: Tue May 18 11:34:59 2021 -0700
anv: Process FS last when compiling graphics pipeline
Enum values for MESA_SHADER_TASK and MESA_SHADER_MESH are larger than
MESA_SHADER_FRAGMENT, so can't rely on the them for ordering anymore.
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin at intel.com>
Reviewed-by: Jason Ekstrand <jason at jlekstrand.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13637>
---
src/intel/vulkan/anv_pipeline.c | 24 ++++++++++++++++++++----
1 file changed, 20 insertions(+), 4 deletions(-)
diff --git a/src/intel/vulkan/anv_pipeline.c b/src/intel/vulkan/anv_pipeline.c
index 085157434ee..ad19ba95bc4 100644
--- a/src/intel/vulkan/anv_pipeline.c
+++ b/src/intel/vulkan/anv_pipeline.c
@@ -1576,7 +1576,20 @@ anv_pipeline_compile_graphics(struct anv_graphics_pipeline *pipeline,
void *pipeline_ctx = ralloc_context(NULL);
- for (unsigned s = 0; s < ARRAY_SIZE(pipeline->shaders); s++) {
+ const gl_shader_stage shader_order[] = {
+ MESA_SHADER_VERTEX,
+ MESA_SHADER_TESS_CTRL,
+ MESA_SHADER_TESS_EVAL,
+ MESA_SHADER_GEOMETRY,
+
+ MESA_SHADER_TASK,
+ MESA_SHADER_MESH,
+
+ MESA_SHADER_FRAGMENT,
+ };
+
+ for (unsigned i = 0; i < ARRAY_SIZE(shader_order); i++) {
+ gl_shader_stage s = shader_order[i];
if (!stages[s].entrypoint)
continue;
@@ -1621,7 +1634,8 @@ anv_pipeline_compile_graphics(struct anv_graphics_pipeline *pipeline,
/* Walk backwards to link */
struct anv_pipeline_stage *next_stage = NULL;
- for (int s = ARRAY_SIZE(pipeline->shaders) - 1; s >= 0; s--) {
+ for (int i = ARRAY_SIZE(shader_order) - 1; i >= 0; i--) {
+ gl_shader_stage s = shader_order[i];
if (!stages[s].entrypoint)
continue;
@@ -1666,7 +1680,8 @@ anv_pipeline_compile_graphics(struct anv_graphics_pipeline *pipeline,
}
struct anv_pipeline_stage *prev_stage = NULL;
- for (unsigned s = 0; s < ARRAY_SIZE(pipeline->shaders); s++) {
+ for (unsigned i = 0; i < ARRAY_SIZE(shader_order); i++) {
+ gl_shader_stage s = shader_order[i];
if (!stages[s].entrypoint)
continue;
@@ -1693,7 +1708,8 @@ anv_pipeline_compile_graphics(struct anv_graphics_pipeline *pipeline,
}
prev_stage = NULL;
- for (unsigned s = 0; s < MESA_SHADER_STAGES; s++) {
+ for (unsigned i = 0; i < ARRAY_SIZE(shader_order); i++) {
+ gl_shader_stage s = shader_order[i];
if (!stages[s].entrypoint)
continue;
More information about the mesa-commit
mailing list