[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