[Mesa-dev] [PATCH 06/15] i965/blorp: Allocate space for push constants on Gen7.

Chad Versace chad.versace at linux.intel.com
Tue May 22 11:18:54 PDT 2012


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

On 05/11/2012 11:03 AM, Paul Berry wrote:
> On Gen7, push constants for shader programs are stored in the URB, so
> blorp code needs to set aside space for them.  This was previously
> unnecessary because blorp code was based on HiZ operations, which
> don't require any shaders.
> 
> This patch adds a call from gen7_blorp_exec() to
> gen7_allocate_push_constants(), to ensure that push constants are
> assigned the correct location in the URB.  It also extracts a new
> function gen7_emit_urb_state() from gen7_upload_urb(), which is
> re-used by gen7_blorp_emit_urb_config() to ensure that the URB regions
> used by all the pipeline stages leave room for the push constants.
> ---
>  src/mesa/drivers/dri/i965/brw_context.h  |    7 +++++++
>  src/mesa/drivers/dri/i965/gen7_blorp.cpp |   27 ++++-----------------------
>  src/mesa/drivers/dri/i965/gen7_urb.c     |   23 ++++++++++++++++-------
>  3 files changed, 27 insertions(+), 30 deletions(-)

> +/* gen7_urb.c */
> +void
> +gen7_allocate_push_constants(struct brw_context *brw);
> +void
> +gen7_emit_urb_state(struct brw_context *brw, GLuint nr_vs_entries,
> +                    GLuint vs_size, GLuint vs_start);
> +

To repeat Ian, a space is needed here between prototypes.

> @@ -100,31 +100,40 @@ gen7_upload_urb(struct brw_context *brw)
>     assert(!brw->gs.prog_active);
>  
>     gen7_emit_vs_workaround_flush(intel);
> +   gen7_emit_urb_state(brw, brw->urb.nr_vs_entries, brw->urb.vs_size,
> +                       brw->urb.vs_start);
> +}
> +
> +void
> +gen7_emit_urb_state(struct brw_context *brw, GLuint nr_vs_entries,
> +                    GLuint vs_size, GLuint vs_start)
> +{
> +   struct intel_context *intel = &brw->intel;
>  
>     BEGIN_BATCH(2);
>     OUT_BATCH(_3DSTATE_URB_VS << 16 | (2 - 2));
> -   OUT_BATCH(brw->urb.nr_vs_entries |
> -             ((brw->urb.vs_size - 1) << GEN7_URB_ENTRY_SIZE_SHIFT) |
> -	     (brw->urb.vs_start << GEN7_URB_STARTING_ADDRESS_SHIFT));
> +   OUT_BATCH(nr_vs_entries |
> +             ((vs_size - 1) << GEN7_URB_ENTRY_SIZE_SHIFT) |
> +	     (vs_start << GEN7_URB_STARTING_ADDRESS_SHIFT));
>     ADVANCE_BATCH();

There's a whitespace issue in this batch.
  
Other than that, this patch is
Reviewed-by: Chad Versace <chad.versace at linux.intel.com>
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.19 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iQIcBAEBAgAGBQJPu9iNAAoJEAIvNt057x8i0GEP/jMZej2VK5eTzxPxQbofO4Kx
+OeR7pXSXjwsKhT1QloanN1yz51ZudOl7EkMu3WVCNvzlEKspAWzJSLxt5jwuq0L
DlvtyUGLzGC++d4T+8rutXUda2GiivNlV45KoExcypVIn+Xg45xudYvLV3NVMtbV
9ZHxCdoJ1XXCQnikaa2xTge32d9SMowzRzbrujJD8/2x16VG2AYl3X58elTzmkR2
kmpUMIn/vr8VJiqxWgWdGKrRCMvXWSZRBG00Y7+BqUTvzHRaAeOficwosJhVuFH4
1/8Ii6hZkJuq5lmLCTA9I+RXlxHXPZ36rex734CKnm2lxNfF5QdccXw4OrjFXi5k
nn4dgcTyUMYb3ofPL3jnEC+AL5ECv9JnpnoSayx769Tch0nVa0qAo9Y6vMCwsfZ0
vHcqbdWBpj7jwQc+aQDNQEoCNYEMhWOwmpL4feieSa/FYSyMxqCDmv7N8jSq+btW
cvacIMDYjOPGIECu0MFFrqRM6LYo1gR4MwPELv6tWp/YSAnae31mvxbRJ+lKjCp1
If2IPrDSQqjRqDMcIhYYvCvInUfOA/ZmFHZOtbt6WUni5IqfqTG41o6DHKFO9f2S
SBn1TRvHq7+lhUIFSVNXQ9HpDY65UwPceGbVwt3cMXGAcjeOboAr2s8l3AMF3wqn
DXSVezpR2xzLkquWcluO
=Ej7m
-----END PGP SIGNATURE-----


More information about the mesa-dev mailing list