aboutsummaryrefslogtreecommitdiffstats
path: root/src/glsl
diff options
context:
space:
mode:
authorJason Ekstrand <[email protected]>2015-10-08 15:47:09 -0700
committerJason Ekstrand <[email protected]>2015-10-19 08:47:03 -0700
commit688d2e45855299dcf474791f29d65040ce5cb2dc (patch)
tree346d7598ed7077a9057222a6d4ddc84ca65b5676 /src/glsl
parent4889c73dd1ed0af7920b950f6810361a6eeabcc2 (diff)
nir/info: Add a few bits of info for fragment shaders
Reviewed-by: Topi Pohjolainen <[email protected]>
Diffstat (limited to 'src/glsl')
-rw-r--r--src/glsl/nir/glsl_to_nir.cpp10
-rw-r--r--src/glsl/nir/nir.h13
2 files changed, 23 insertions, 0 deletions
diff --git a/src/glsl/nir/glsl_to_nir.cpp b/src/glsl/nir/glsl_to_nir.cpp
index d230ad4416d..76e1382c362 100644
--- a/src/glsl/nir/glsl_to_nir.cpp
+++ b/src/glsl/nir/glsl_to_nir.cpp
@@ -173,6 +173,16 @@ glsl_to_nir(const struct gl_shader_program *shader_prog,
shader->info.gs.invocations = sh->Geom.Invocations;
break;
+ case MESA_SHADER_FRAGMENT: {
+ struct gl_fragment_program *fp =
+ (struct gl_fragment_program *)sh->Program;
+
+ shader->info.fs.uses_discard = fp->UsesKill;
+ shader->info.fs.early_fragment_tests = sh->EarlyFragmentTests;
+ shader->info.fs.depth_layout = fp->FragDepthLayout;
+ break;
+ }
+
case MESA_SHADER_COMPUTE: {
struct gl_compute_program *cp = (struct gl_compute_program *)sh->Program;
shader->info.cs.local_size[0] = cp->LocalSize[0];
diff --git a/src/glsl/nir/nir.h b/src/glsl/nir/nir.h
index 32259e720d9..2ab48fb9d9c 100644
--- a/src/glsl/nir/nir.h
+++ b/src/glsl/nir/nir.h
@@ -1503,6 +1503,19 @@ typedef struct nir_shader_info {
} gs;
struct {
+ bool uses_discard;
+
+ /**
+ * Whether early fragment tests are enabled as defined by
+ * ARB_shader_image_load_store.
+ */
+ bool early_fragment_tests;
+
+ /** gl_FragDepth layout for ARB_conservative_depth. */
+ enum gl_frag_depth_layout depth_layout;
+ } fs;
+
+ struct {
unsigned local_size[3];
} cs;
};