nir/info: Add a few bits of info for fragment shaders
Reviewed-by: Topi Pohjolainen <topi.pohjolainen@intel.com>
This commit is contained in:
@@ -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];
|
||||
|
||||
@@ -1502,6 +1502,19 @@ typedef struct nir_shader_info {
|
||||
unsigned invocations;
|
||||
} 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;
|
||||
|
||||
@@ -1129,6 +1129,12 @@ prog_to_nir(const struct gl_program *prog,
|
||||
s->info.uses_clip_distance_out = false;
|
||||
s->info.separate_shader = false;
|
||||
|
||||
if (stage == MESA_SHADER_FRAGMENT) {
|
||||
struct gl_fragment_program *fp = (struct gl_fragment_program *)prog;
|
||||
|
||||
s->info.fs.uses_discard = fp->UsesKill;
|
||||
}
|
||||
|
||||
fail:
|
||||
if (c->error) {
|
||||
ralloc_free(s);
|
||||
|
||||
Reference in New Issue
Block a user