radeonsi: pass ARB_conservative_depth parameters to the hardware

Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
diff --git a/src/gallium/drivers/radeonsi/si_shader.c b/src/gallium/drivers/radeonsi/si_shader.c
index 4ed5906..4c23090 100644
--- a/src/gallium/drivers/radeonsi/si_shader.c
+++ b/src/gallium/drivers/radeonsi/si_shader.c
@@ -2745,10 +2745,29 @@
 		}
 		break;
 	}
-	case TGSI_PROCESSOR_FRAGMENT:
+	case TGSI_PROCESSOR_FRAGMENT: {
+		int i;
+
 		si_shader_ctx.radeon_bld.load_input = declare_input_fs;
 		bld_base->emit_epilogue = si_llvm_emit_fs_epilogue;
+		shader->shader.ps_conservative_z = V_02880C_EXPORT_ANY_Z;
+
+		for (i = 0; i < shader_info.num_properties; i++) {
+			switch (shader_info.properties[i].name) {
+			case TGSI_PROPERTY_FS_DEPTH_LAYOUT:
+				switch (shader_info.properties[i].data[0]) {
+				case TGSI_FS_DEPTH_LAYOUT_GREATER:
+					shader->shader.ps_conservative_z = V_02880C_EXPORT_GREATER_THAN_Z;
+					break;
+				case TGSI_FS_DEPTH_LAYOUT_LESS:
+					shader->shader.ps_conservative_z = V_02880C_EXPORT_LESS_THAN_Z;
+					break;
+				}
+				break;
+			}
+		}
 		break;
+	}
 	default:
 		assert(!"Unsupported shader type");
 		return -1;