[virglrenderer-devel] [PATCH 3/7] shaders: handle early fragment tests
Dave Airlie
airlied at gmail.com
Fri Jul 20 04:50:38 UTC 2018
From: Dave Airlie <airlied at redhat.com>
As part of shader image support we need to support this property.
---
src/vrend_shader.c | 12 ++++++++++++
1 file changed, 12 insertions(+)
diff --git a/src/vrend_shader.c b/src/vrend_shader.c
index 444f057..a35dff7 100644
--- a/src/vrend_shader.c
+++ b/src/vrend_shader.c
@@ -197,6 +197,7 @@ struct dump_ctx {
bool vs_has_pervertex;
bool write_mul_temp;
bool has_sample_input;
+ bool early_depth_stencil;
int tcs_vertices_out;
int tes_prim_mode;
@@ -1250,6 +1251,13 @@ iter_property(struct tgsi_iterate_context *iter,
if (prop->Property.PropertyName == TGSI_PROPERTY_TES_POINT_MODE) {
ctx->tes_point_mode = prop->u[0].Data;
}
+
+ if (prop->Property.PropertyName == TGSI_PROPERTY_FS_EARLY_DEPTH_STENCIL) {
+ ctx->early_depth_stencil = prop->u[0].Data > 0;
+ if (ctx->early_depth_stencil)
+ ctx->shader_req_bits |= SHADER_REQ_IMAGE_LOAD_STORE;
+ }
+
return TRUE;
}
@@ -4046,6 +4054,10 @@ static char *emit_ios(struct dump_ctx *ctx, char *glsl_hdr)
ctx->fs_pixel_center ? "pixel_center_integer" : "");
STRCAT_WITH_RET(glsl_hdr, buf);
}
+ if (ctx->early_depth_stencil) {
+ snprintf(buf, 255, "layout(early_fragment_tests) in;\n");
+ STRCAT_WITH_RET(glsl_hdr, buf);
+ }
}
if (ctx->prog_type == TGSI_PROCESSOR_GEOMETRY) {
char invocbuf[25];
--
2.14.3
More information about the virglrenderer-devel
mailing list