[Mesa-dev] [PATCH] i965: Move PSCDEPTH calculations from draw time to compile time.

Matt Turner mattst88 at gmail.com
Thu Dec 4 14:29:02 PST 2014


On Wed, Dec 3, 2014 at 5:58 PM, Kenneth Graunke <kenneth at whitecape.org> wrote:
> On Tuesday, December 02, 2014 10:34:49 AM Matt Turner wrote:
>> On Tue, Dec 2, 2014 at 3:50 AM, Kenneth Graunke <kenneth at whitecape.org> wrote:
>> > The "Pixel Shader Computed Depth Mode" value is entirely based on the
>> > shader program, so we can easily do it at compile time.  This avoids the
>> > if+switch on every 3DSTATE_WM (Gen7)/3DSTATE_PS_EXTRA (Gen8+) upload,
>> > and shares a bit more code.
>> >
>> > This also simplifies the PMA stall code, making it match the formula
>> > more closely, and drops a BRW_NEW_FRAGMENT_PROGRAM dependency.  (Note
>> > that the previous comment was wrong - the code and the documentation
>> > have != PSCDEPTH_OFF, not ==.)
>> >
>> > Signed-off-by: Kenneth Graunke <kenneth at whitecape.org>
>> > ---
>> >  src/mesa/drivers/dri/i965/brw_context.h      |  2 ++
>> >  src/mesa/drivers/dri/i965/brw_defines.h      | 17 +++++++++--------
>> >  src/mesa/drivers/dri/i965/brw_wm.c           | 21 +++++++++++++++++++++
>> >  src/mesa/drivers/dri/i965/gen7_wm_state.c    | 22 +++-------------------
>> >  src/mesa/drivers/dri/i965/gen8_depth_state.c | 12 ++++--------
>> >  src/mesa/drivers/dri/i965/gen8_ps_state.c    | 18 +-----------------
>> >  6 files changed, 40 insertions(+), 52 deletions(-)
>> >
>> > diff --git a/src/mesa/drivers/dri/i965/brw_context.h b/src/mesa/drivers/dri/i965/brw_context.h
>> > index ec4b3dd..b4ddc17 100644
>> > --- a/src/mesa/drivers/dri/i965/brw_context.h
>> > +++ b/src/mesa/drivers/dri/i965/brw_context.h
>> > @@ -390,6 +390,8 @@ struct brw_wm_prog_data {
>> >        /** @} */
>> >     } binding_table;
>> >
>> > +   uint8_t computed_depth_mode;
>>
>> Presumably we should use the new enum type here (and below in the
>> function call), and mark the enum definition PACKED.
>>
>> With that,
>>
>> Reviewed-by: Matt Turner <mattst88 at gmail.com>
>
> Kind of painful - the enum is defined in brw_defines.h; this field is in
> brw_context.h which doesn't #include that.  Minor benefit.
>
> I guess we could move the enum declaration to brw_context.h, but...*shrug*?

Ah, okay. That'd be annoying.


More information about the mesa-dev mailing list