[Mesa-dev] [PATCH] radeonsi: pass ARB_conservative_depth parameters to the hardware

2014-06-16 Thread Marek Olšák
From: Marek Olšák marek.ol...@amd.com

---
 src/gallium/drivers/radeonsi/si_shader.c | 21 -
 src/gallium/drivers/radeonsi/si_shader.h |  1 +
 src/gallium/drivers/radeonsi/si_state_draw.c |  4 
 src/gallium/drivers/radeonsi/sid.h   |  4 
 4 files changed, 29 insertions(+), 1 deletion(-)

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 @@ int si_pipe_shader_create(
}
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;
diff --git a/src/gallium/drivers/radeonsi/si_shader.h 
b/src/gallium/drivers/radeonsi/si_shader.h
index 6609788..81997c0 100644
--- a/src/gallium/drivers/radeonsi/si_shader.h
+++ b/src/gallium/drivers/radeonsi/si_shader.h
@@ -138,6 +138,7 @@ struct si_shader {
unsignedgs_input_prim;
unsignedgs_output_prim;
unsignedgs_max_out_vertices;
+   unsignedps_conservative_z;
 
unsignednparam;
booluses_kill;
diff --git a/src/gallium/drivers/radeonsi/si_state_draw.c 
b/src/gallium/drivers/radeonsi/si_state_draw.c
index 52ecf26..01564eb 100644
--- a/src/gallium/drivers/radeonsi/si_state_draw.c
+++ b/src/gallium/drivers/radeonsi/si_state_draw.c
@@ -269,6 +269,10 @@ static void si_pipe_shader_ps(struct pipe_context *ctx, 
struct si_pipe_shader *s
if (shader-shader.uses_kill || shader-key.ps.alpha_func != 
PIPE_FUNC_ALWAYS)
db_shader_control |= S_02880C_KILL_ENABLE(1);
 
+   if (sctx-b.chip_class = CIK)
+   db_shader_control |=
+   
S_02880C_CONSERVATIVE_Z_EXPORT(shader-shader.ps_conservative_z);
+
spi_ps_in_control = S_0286D8_NUM_INTERP(shader-shader.nparam) |
S_0286D8_BC_OPTIMIZE_DISABLE(1);
 
diff --git a/src/gallium/drivers/radeonsi/sid.h 
b/src/gallium/drivers/radeonsi/sid.h
index 558da10..e3f788e 100644
--- a/src/gallium/drivers/radeonsi/sid.h
+++ b/src/gallium/drivers/radeonsi/sid.h
@@ -6712,6 +6712,10 @@
 #define   S_02880C_CONSERVATIVE_Z_EXPORT(x)   (((x)  
0x03)  13)
 #define   G_02880C_CONSERVATIVE_Z_EXPORT(x)   (((x)  
13)  0x03)
 #define   C_02880C_CONSERVATIVE_Z_EXPORT  
0x9FFF
+#define V_02880C_EXPORT_ANY_Z   0
+#define V_02880C_EXPORT_LESS_THAN_Z 1
+#define V_02880C_EXPORT_GREATER_THAN_Z  2
+#define V_02880C_EXPORT_RESERVED3
 /* */
 #define R_028810_PA_CL_CLIP_CNTL
0x028810
 #define   S_028810_UCP_ENA_0(x)   (((x)  
0x1)  0)
-- 
1.9.1

___
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev


Re: [Mesa-dev] [PATCH] radeonsi: pass ARB_conservative_depth parameters to the hardware

2014-06-16 Thread Michel Dänzer
On 17.06.2014 00:08, Marek Olšák wrote:
 From: Marek Olšák marek.ol...@amd.com

Reviewed-by: Michel Dänzer michel.daen...@amd.com


-- 
Earthling Michel Dänzer|  http://www.amd.com
Libre software enthusiast  |Mesa and X developer
___
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev