[Mesa-dev] i965: Support for gen8/9 blorp

Kenneth Graunke kenneth at whitecape.org
Thu Apr 21 04:50:16 UTC 2016


On Saturday, April 16, 2016 4:42:28 PM PDT Topi Pohjolainen wrote:
> This series adds blorp pipeline upload support for gen8 and gen9,
> switches over to blorp blits (except for 2X and 16X msaa which don't
> have support in blorp yet) and finally re-introduces blorp clears
> for gen6-9. This makes it possible to close bug 94181 preventing
> single sample compression getting enabled.
> 
> First two patches are not mandatory, they are just something I wrote
> during debugging. There are quite a few patches that simply make
> either core i965 pipeline upload logic or meta fast clear utilities
> available for blorp to re-use. Most important is the texture surface
> setup for gen8/9 - blorp specific logic is only introduced for render
> target setup. I already have follow-up plans for this also where the
> aim is to drop all blorp specific surface setup logic by re-using
> core i965 upload instead. Among other things this provides easy
> switch to layered clears using instance identifier.
> 
> Re-introduction of blorp clears is slightly modified as the original
> didn't integrate with the current driver. I also chose to drop some
> logic and re-use gen9 aware counterparts from i965-meta.
> 
> Patches 34-39 are optimizations reducing state trashing. These are
> needed to avoid performance regressions in a few synthetic
> benchmarks. A few synthetic cases were improved even without.
> 
> This series doesn't remove any meta logic yet. Simple reverts of
> 
>   i965/blorp: Enable blits on gen8
>   i965/blorp: Enable for normal color clears
>   i965/blorp: Enable for buffer resolves
> 
> allow us to move back to meta if needs be.
> 
> Big thanks to Ken for helping in debugging!!
> 
> Topi Pohjolainen (40):
>   i965/gen9: Use correct size for DS_STATE

Reviewed-by: Kenneth Graunke <kenneth at whitecape.org>

>   i965/gen8: Document inst buffer size modify enabling bit

I'd prefer not to land this one, but if other people want it,
I'm not really NAK'ing it either.

>   i965/gen8: Expose surface state helpers
>   i965/gen8: Expose state base address setup
>   i965/blorp: Let compiler calculate the vertex buffer size
>   i965/blorp/gen7: Prepare re-using for gen8
>   i965/blorp: Use 8k chunk size for urb allocation
>   i965/blorp/gen7: Expose state setup applicable to gen8
>   i965/blorp/gen6: Prepare vertex buffer setup logic for gen8
>   i965/blorp: Prepare render target write for gen8
>   i965/blorp: Prepare sampling for gen9
>   i965: Allow texture surface state setup to be used by blorp

(with the v2 of "Use 8k chunk size"...)

Reviewed-by: Kenneth Graunke <kenneth at whitecape.org>

>   i965/blorp: Pipeline upload support for gen8

With the PMA stall fix added, and the CCW bit removed,
Reviewed-by: Kenneth Graunke <kenneth at whitecape.org>

>   i965/blorp: Add support for source swizzle

This one needs CopyTexSubImage to use the swizzle.  With that fixed, it
would get an R-b too.  I'd love to see it use brw_get_texture_swizzle(),
though.  (Maybe we should change it to take _BaseFormat rather than a
texture?)

>   i965/blorp: Add support for sampling 3D textures
>   i965/blorp: Add check for supported sample numbers

With the use_blorp -> !use_blorp fix,
Reviewed-by: Kenneth Graunke <kenneth at whitecape.org>

>   i965/blorp: Prepare stencil sampling for gen8
>   i965/blorp: Enable blits on gen8
>   i965/blorp: Add support for setting fast clear operation
>   i965/blorp: Add support for disabling color blending
>   i965/blorp: Reduce scope for generator and its inputs
>   i965/blorp: Switch the order of render and texture targets
>   i965: Declare input to mcs alignment calculation constant
>   i965/meta: Expose fast clear rectangle calculation
>   i965/meta: Expose resolve clear rectangle calculation
>   i965/meta: Expose non-fast clear rectangle calculation
>   i965/meta: Expose fast clear value setup
>   i965/meta: Expose check for fast clear compatibility
>   i965/meta: Move check for srgb into is_color_fast_clear_compatible()
>   i965/blorp: Re-introduce clear programs
>   i965/blorp: Skip uploading state/options not needed for clears

Reviewed-by: Kenneth Graunke <kenneth at whitecape.org>

>   i965/blorp/gen7: Prepare blorp being the very first renderer

I think we need to discuss this further.

>   i965/blorp: Prepare to switch from compute pipeline
>   i965/blorp: Skip re-emitting urb config whenever possible
>   i965/blorp: Do not tricker urb re-configuration unnecessarily

with v2 of "Skip re-emitting urb config",

Reviewed-by: Kenneth Graunke <kenneth at whitecape.org>

>   i965/blorp: Reconfigure base state address only if needed
>   i965/blorp: Leave new batch signaling to batch buffer logic
>   i965/blorp: Use more fine grained state trashing than new context

I have some comments on these.

>   i965/blorp: Enable for normal color clears
>   i965/blorp: Enable for buffer resolves

Reviewed-by: Kenneth Graunke <kenneth at whitecape.org>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: This is a digitally signed message part.
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20160420/919da6f7/attachment-0001.sig>


More information about the mesa-dev mailing list