intel/blorp: Make the Z component of the primitive adjustable
authorJason Ekstrand <jason.ekstrand@intel.com>
Fri, 7 Oct 2016 05:03:12 +0000 (22:03 -0700)
committerJason Ekstrand <jason.ekstrand@intel.com>
Fri, 14 Oct 2016 22:39:41 +0000 (15:39 -0700)
We want to be able to start doing slow depth clears with blorp.  This
allows us to adjust the depth we're clearing to.

Signed-off-by: Jason Ekstrand <jason@jlekstrand.net>
Reviewed-by: Topi Pohjolainen <topi.pohjolainen@intel.com>
src/intel/blorp/blorp_genX_exec.h
src/intel/blorp/blorp_priv.h

index 88171bea53ef21e3f86dd4b6e68bf992a51c7e3a..b1af064ad01171ffe769943d79fcb3fa7295d919 100644 (file)
@@ -174,9 +174,9 @@ blorp_emit_vertex_data(struct blorp_batch *batch,
                        uint32_t *size)
 {
    const float vertices[] = {
-      /* v0 */ (float)params->x1, (float)params->y1,
-      /* v1 */ (float)params->x0, (float)params->y1,
-      /* v2 */ (float)params->x0, (float)params->y0,
+      /* v0 */ (float)params->x1, (float)params->y1, params->z,
+      /* v1 */ (float)params->x0, (float)params->y1, params->z,
+      /* v2 */ (float)params->x0, (float)params->y0, params->z,
    };
 
    void *data = blorp_alloc_vertex_buffer(batch, sizeof(vertices), addr);
@@ -228,7 +228,7 @@ blorp_emit_vertex_buffers(struct blorp_batch *batch,
    uint32_t size;
    blorp_emit_vertex_data(batch, params, &vb[0].BufferStartingAddress, &size);
    vb[0].VertexBufferIndex = 0;
-   vb[0].BufferPitch = 2 * sizeof(float);
+   vb[0].BufferPitch = 3 * sizeof(float);
    vb[0].VertexBufferMOCS = batch->blorp->mocs.vb;
 #if GEN_GEN >= 7
    vb[0].AddressModifyEnable = true;
@@ -347,11 +347,11 @@ blorp_emit_vertex_elements(struct blorp_batch *batch,
 
    ve[1].VertexBufferIndex = 0;
    ve[1].Valid = true;
-   ve[1].SourceElementFormat = ISL_FORMAT_R32G32_FLOAT;
+   ve[1].SourceElementFormat = ISL_FORMAT_R32G32B32_FLOAT;
    ve[1].SourceElementOffset = 0;
    ve[1].Component0Control = VFCOMP_STORE_SRC;
    ve[1].Component1Control = VFCOMP_STORE_SRC;
-   ve[1].Component2Control = VFCOMP_STORE_0;
+   ve[1].Component2Control = VFCOMP_STORE_SRC;
    ve[1].Component3Control = VFCOMP_STORE_1_FP;
 
    for (unsigned i = 0; i < num_varyings; ++i) {
index ba4c94c5ac7865d89e2e3c697fe732b48988c0c1..c7989d9974c89ed009170ed70d20bf3d6a72e870 100644 (file)
@@ -180,6 +180,7 @@ struct blorp_params
    uint32_t y0;
    uint32_t x1;
    uint32_t y1;
+   float z;
    struct brw_blorp_surface_info depth;
    uint32_t depth_format;
    struct brw_blorp_surface_info src;