<div dir="ltr">Tested-by: Nick Sarnie <<a href="mailto:commendsarnex@gmail.com" target="_blank">commendsarnex@gmail.com</a>> using Gallium Nine.</div><div class="gmail_extra"><br><div class="gmail_quote">On Sun, Nov 9, 2014 at 6:09 PM, Marek Olšák <span dir="ltr"><<a href="mailto:maraeo@gmail.com" target="_blank">maraeo@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">From: Marek Olšák <<a href="mailto:marek.olsak@amd.com">marek.olsak@amd.com</a>><br>
<br>
Required by Nine.<br>
---<br>
 src/gallium/drivers/radeonsi/si_pipe.c       |  2 +-<br>
 src/gallium/drivers/radeonsi/si_state.c      |  1 -<br>
 src/gallium/drivers/radeonsi/si_state_draw.c | 16 +++++++++++++++-<br>
 3 files changed, 16 insertions(+), 3 deletions(-)<br>
<br>
diff --git a/src/gallium/drivers/radeonsi/si_pipe.c b/src/gallium/drivers/radeonsi/si_pipe.c<br>
index 7c479d6..279d7ce 100644<br>
--- a/src/gallium/drivers/radeonsi/si_pipe.c<br>
+++ b/src/gallium/drivers/radeonsi/si_pipe.c<br>
@@ -211,6 +211,7 @@ static int si_get_param(struct pipe_screen* pscreen, enum pipe_cap param)<br>
        case PIPE_CAP_SAMPLE_SHADING:<br>
        case PIPE_CAP_DRAW_INDIRECT:<br>
        case PIPE_CAP_CLIP_HALFZ:<br>
+       case PIPE_CAP_TGSI_VS_WINDOW_SPACE_POSITION:<br>
                return 1;<br>
<br>
        case PIPE_CAP_TEXTURE_MULTISAMPLE:<br>
@@ -249,7 +250,6 @@ static int si_get_param(struct pipe_screen* pscreen, enum pipe_cap param)<br>
        case PIPE_CAP_TGSI_TEXCOORD:<br>
        case PIPE_CAP_FAKE_SW_MSAA:<br>
        case PIPE_CAP_TEXTURE_GATHER_OFFSETS:<br>
-       case PIPE_CAP_TGSI_VS_WINDOW_SPACE_POSITION:<br>
        case PIPE_CAP_TGSI_FS_FINE_DERIVATIVE:<br>
        case PIPE_CAP_CONDITIONAL_RENDER_INVERTED:<br>
        case PIPE_CAP_SAMPLER_VIEW_TARGET:<br>
diff --git a/src/gallium/drivers/radeonsi/si_state.c b/src/gallium/drivers/radeonsi/si_state.c<br>
index 030d6e9..ea8e61a 100644<br>
--- a/src/gallium/drivers/radeonsi/si_state.c<br>
+++ b/src/gallium/drivers/radeonsi/si_state.c<br>
@@ -3184,7 +3184,6 @@ void si_init_config(struct si_context *sctx)<br>
        si_pm4_set_reg(pm4, R_028230_PA_SC_EDGERULE, 0xAAAAAAAA);<br>
        si_pm4_set_reg(pm4, R_0282D0_PA_SC_VPORT_ZMIN_0, 0x00000000);<br>
        si_pm4_set_reg(pm4, R_0282D4_PA_SC_VPORT_ZMAX_0, 0x3F800000);<br>
-       si_pm4_set_reg(pm4, R_028818_PA_CL_VTE_CNTL, 0x0000043F);<br>
        si_pm4_set_reg(pm4, R_028820_PA_CL_NANINF_CNTL, 0x00000000);<br>
        si_pm4_set_reg(pm4, R_028BE8_PA_CL_GB_VERT_CLIP_ADJ, 0x3F800000);<br>
        si_pm4_set_reg(pm4, R_028BEC_PA_CL_GB_VERT_DISC_ADJ, 0x3F800000);<br>
diff --git a/src/gallium/drivers/radeonsi/si_state_draw.c b/src/gallium/drivers/radeonsi/si_state_draw.c<br>
index 708e42a..d5b27e7 100644<br>
--- a/src/gallium/drivers/radeonsi/si_state_draw.c<br>
+++ b/src/gallium/drivers/radeonsi/si_state_draw.c<br>
@@ -150,6 +150,8 @@ static void si_shader_vs(struct si_shader *shader)<br>
        unsigned num_sgprs, num_user_sgprs;<br>
        unsigned nparams, i, vgpr_comp_cnt;<br>
        uint64_t va;<br>
+       unsigned window_space =<br>
+          shader->selector->info.properties[TGSI_PROPERTY_VS_WINDOW_SPACE_POSITION];<br>
<br>
        pm4 = shader->pm4 = CALLOC_STRUCT(si_pm4_state);<br>
<br>
@@ -218,6 +220,15 @@ static void si_shader_vs(struct si_shader *shader)<br>
                       S_00B12C_SO_BASE2_EN(!!shader->selector->so.stride[2]) |<br>
                       S_00B12C_SO_BASE3_EN(!!shader->selector->so.stride[3]) |<br>
                       S_00B12C_SO_EN(!!shader->selector->so.num_outputs));<br>
+       if (window_space)<br>
+               si_pm4_set_reg(pm4, R_028818_PA_CL_VTE_CNTL,<br>
+                              S_028818_VTX_XY_FMT(1) | S_028818_VTX_Z_FMT(1));<br>
+       else<br>
+               si_pm4_set_reg(pm4, R_028818_PA_CL_VTE_CNTL,<br>
+                              S_028818_VTX_W0_FMT(1) |<br>
+                              S_028818_VPORT_X_SCALE_ENA(1) | S_028818_VPORT_X_OFFSET_ENA(1) |<br>
+                              S_028818_VPORT_Y_SCALE_ENA(1) | S_028818_VPORT_Y_OFFSET_ENA(1) |<br>
+                              S_028818_VPORT_Z_SCALE_ENA(1) | S_028818_VPORT_Z_OFFSET_ENA(1));<br>
 }<br>
<br>
 static void si_shader_ps(struct si_shader *shader)<br>
@@ -436,6 +447,8 @@ static bool si_update_draw_info_state(struct si_context *sctx,<br>
 {<br>
        struct si_pm4_state *pm4 = CALLOC_STRUCT(si_pm4_state);<br>
        struct si_shader *vs = si_get_vs_state(sctx);<br>
+       unsigned window_space =<br>
+          vs->selector->info.properties[TGSI_PROPERTY_VS_WINDOW_SPACE_POSITION];<br>
        unsigned prim = si_conv_pipe_prim(info->mode);<br>
        unsigned gs_out_prim =<br>
                si_conv_prim_to_gs_out(sctx->gs_shader ?<br>
@@ -496,7 +509,8 @@ static bool si_update_draw_info_state(struct si_context *sctx,<br>
        si_pm4_set_reg(pm4, R_028810_PA_CL_CLIP_CNTL,<br>
                       sctx->queued.named.rasterizer->pa_cl_clip_cntl |<br>
                       (vs->clip_dist_write ? 0 :<br>
-                       sctx->queued.named.rasterizer->clip_plane_enable & 0x3F));<br>
+                       sctx->queued.named.rasterizer->clip_plane_enable & 0x3F) |<br>
+                      S_028810_CLIP_DISABLE(window_space));<br>
<br>
        si_pm4_set_state(sctx, draw_info, pm4);<br>
        return true;<br>
<span class="HOEnZb"><font color="#888888">--<br>
2.1.0<br>
<br>
_______________________________________________<br>
mesa-dev mailing list<br>
<a href="mailto:mesa-dev@lists.freedesktop.org">mesa-dev@lists.freedesktop.org</a><br>
<a href="http://lists.freedesktop.org/mailman/listinfo/mesa-dev" target="_blank">http://lists.freedesktop.org/mailman/listinfo/mesa-dev</a><br>
</font></span></blockquote></div><br></div>