[Mesa-dev] [PATCH 2/2] radeonsi: use re-Z
Marek Olšák
maraeo at gmail.com
Wed Feb 24 10:28:35 UTC 2016
On Wed, Feb 24, 2016 at 4:02 AM, Michel Dänzer <michel at daenzer.net> wrote:
> On 24.02.2016 01:45, Marek Olšák wrote:
>> From: Marek Olšák <marek.olsak at amd.com>
>>
>> This can increase perf for shaders that kill pixels (kill, alpha-test,
>> alpha-to-coverage).
>> ---
>> src/gallium/drivers/radeonsi/si_shader.h | 1 +
>> src/gallium/drivers/radeonsi/si_state.c | 6 +++---
>> src/gallium/drivers/radeonsi/si_state_shaders.c | 16 +++++++++++++---
>> 3 files changed, 17 insertions(+), 6 deletions(-)
>>
>> diff --git a/src/gallium/drivers/radeonsi/si_shader.h b/src/gallium/drivers/radeonsi/si_shader.h
>> index ff5c24d..637d264 100644
>> --- a/src/gallium/drivers/radeonsi/si_shader.h
>> +++ b/src/gallium/drivers/radeonsi/si_shader.h
>> @@ -365,6 +365,7 @@ struct si_shader {
>> struct r600_resource *scratch_bo;
>> union si_shader_key key;
>> bool is_binary_shared;
>> + unsigned z_order;
>>
>> /* The following data is all that's needed for binary shaders. */
>> struct radeon_shader_binary binary;
>> diff --git a/src/gallium/drivers/radeonsi/si_state.c b/src/gallium/drivers/radeonsi/si_state.c
>> index 2dfdbeb..b23b17a 100644
>> --- a/src/gallium/drivers/radeonsi/si_state.c
>> +++ b/src/gallium/drivers/radeonsi/si_state.c
>> @@ -1339,10 +1339,10 @@ static void si_emit_db_render_state(struct si_context *sctx, struct r600_atom *s
>> sctx->ps_db_shader_control;
>>
>> /* Bug workaround for smoothing (overrasterization) on SI. */
>> - if (sctx->b.chip_class == SI && sctx->smoothing_enabled)
>> + if (sctx->b.chip_class == SI && sctx->smoothing_enabled) {
>> + db_shader_control &= C_02880C_Z_ORDER;
>> db_shader_control |= S_02880C_Z_ORDER(V_02880C_LATE_Z);
>> - else
>> - db_shader_control |= S_02880C_Z_ORDER(V_02880C_EARLY_Z_THEN_LATE_Z);
>> + }
>
> The switch from LATE_Z to EARLY_Z_THEN_LATE_Z here should either be in a
> separate change, or at least explained in the commit log or a code
> comment. With any of that done, this change is
It doesn't switch from LATE_Z to EARLY_Z_THEN_LATE_Z. It actually
doesn't change the behavior at all. The bug workaround simply sets
LATE_Z no matter which mode is preferred.
Marek
More information about the mesa-dev
mailing list