From: Marek Olšák <marek.ol...@amd.com>

st/mesa does this for us.
---
 src/gallium/drivers/radeonsi/si_pipe.h          | 1 -
 src/gallium/drivers/radeonsi/si_state.c         | 9 +--------
 src/gallium/drivers/radeonsi/si_state_shaders.c | 6 ++----
 3 files changed, 3 insertions(+), 13 deletions(-)

diff --git a/src/gallium/drivers/radeonsi/si_pipe.h 
b/src/gallium/drivers/radeonsi/si_pipe.h
index 1080e72..ef25df8 100644
--- a/src/gallium/drivers/radeonsi/si_pipe.h
+++ b/src/gallium/drivers/radeonsi/si_pipe.h
@@ -158,21 +158,20 @@ struct si_images_info {
        struct pipe_image_view          views[SI_NUM_IMAGES];
        uint32_t                        compressed_colortex_mask;
        unsigned                        enabled_mask;
 };
 
 struct si_framebuffer {
        struct r600_atom                atom;
        struct pipe_framebuffer_state   state;
        unsigned                        nr_samples;
        unsigned                        log_samples;
-       unsigned                        cb0_is_integer;
        unsigned                        compressed_cb_mask;
        unsigned                        spi_shader_col_format;
        unsigned                        spi_shader_col_format_alpha;
        unsigned                        spi_shader_col_format_blend;
        unsigned                        spi_shader_col_format_blend_alpha;
        unsigned                        color_is_int8; /* bitmask */
        unsigned                        dirty_cbufs;
        bool                            dirty_zsbuf;
        bool                            any_dst_linear;
 };
diff --git a/src/gallium/drivers/radeonsi/si_state.c 
b/src/gallium/drivers/radeonsi/si_state.c
index 1703e42..1d6bf06 100644
--- a/src/gallium/drivers/radeonsi/si_state.c
+++ b/src/gallium/drivers/radeonsi/si_state.c
@@ -1125,22 +1125,21 @@ static void si_emit_db_render_state(struct si_context 
*sctx, struct r600_atom *s
                        radeon_emit(cs, S_028004_ZPASS_INCREMENT_DISABLE(1));
                }
        }
 
        /* DB_RENDER_OVERRIDE2 */
        radeon_set_context_reg(cs, R_028010_DB_RENDER_OVERRIDE2,
                
S_028010_DISABLE_ZMASK_EXPCLEAR_OPTIMIZATION(sctx->db_depth_disable_expclear) |
                
S_028010_DISABLE_SMEM_EXPCLEAR_OPTIMIZATION(sctx->db_stencil_disable_expclear) |
                S_028010_DECOMPRESS_Z_ON_FLUSH(sctx->framebuffer.nr_samples >= 
4));
 
-       db_shader_control = 
S_02880C_ALPHA_TO_MASK_DISABLE(sctx->framebuffer.cb0_is_integer) |
-                           sctx->ps_db_shader_control;
+       db_shader_control = sctx->ps_db_shader_control;
 
        /* Bug workaround for smoothing (overrasterization) on SI. */
        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);
        }
 
        /* Disable the gl_SampleMask fragment shader output if MSAA is 
disabled. */
        if (sctx->framebuffer.nr_samples <= 1 || (rs && 
!rs->multisample_enable))
                db_shader_control &= C_02880C_MASK_EXPORT_ENABLE;
@@ -2245,21 +2244,20 @@ static void si_dec_framebuffer_counters(const struct 
pipe_framebuffer_state *sta
        }
 }
 
 static void si_set_framebuffer_state(struct pipe_context *ctx,
                                     const struct pipe_framebuffer_state *state)
 {
        struct si_context *sctx = (struct si_context *)ctx;
        struct pipe_constant_buffer constbuf = {0};
        struct r600_surface *surf = NULL;
        struct r600_texture *rtex;
-       bool old_cb0_is_integer = sctx->framebuffer.cb0_is_integer;
        bool old_any_dst_linear = sctx->framebuffer.any_dst_linear;
        unsigned old_nr_samples = sctx->framebuffer.nr_samples;
        int i;
 
        for (i = 0; i < sctx->framebuffer.state.nr_cbufs; i++) {
                if (!sctx->framebuffer.state.cbufs[i])
                        continue;
 
                rtex = (struct 
r600_texture*)sctx->framebuffer.state.cbufs[i]->texture;
                if (rtex->dcc_gather_statistics)
@@ -2290,27 +2288,22 @@ static void si_set_framebuffer_state(struct 
pipe_context *ctx,
 
        sctx->framebuffer.spi_shader_col_format = 0;
        sctx->framebuffer.spi_shader_col_format_alpha = 0;
        sctx->framebuffer.spi_shader_col_format_blend = 0;
        sctx->framebuffer.spi_shader_col_format_blend_alpha = 0;
        sctx->framebuffer.color_is_int8 = 0;
 
        sctx->framebuffer.compressed_cb_mask = 0;
        sctx->framebuffer.nr_samples = util_framebuffer_get_num_samples(state);
        sctx->framebuffer.log_samples = 
util_logbase2(sctx->framebuffer.nr_samples);
-       sctx->framebuffer.cb0_is_integer = state->nr_cbufs && state->cbufs[0] &&
-                                 
util_format_is_pure_integer(state->cbufs[0]->format);
        sctx->framebuffer.any_dst_linear = false;
 
-       if (sctx->framebuffer.cb0_is_integer != old_cb0_is_integer)
-               si_mark_atom_dirty(sctx, &sctx->db_render_state);
-
        for (i = 0; i < state->nr_cbufs; i++) {
                if (!state->cbufs[i])
                        continue;
 
                surf = (struct r600_surface*)state->cbufs[i];
                rtex = (struct r600_texture*)surf->base.texture;
 
                if (!surf->color_initialized) {
                        si_initialize_color_surface(sctx, surf);
                }
diff --git a/src/gallium/drivers/radeonsi/si_state_shaders.c 
b/src/gallium/drivers/radeonsi/si_state_shaders.c
index 816aadc..5274239 100644
--- a/src/gallium/drivers/radeonsi/si_state_shaders.c
+++ b/src/gallium/drivers/radeonsi/si_state_shaders.c
@@ -821,22 +821,21 @@ static void si_shader_init_pm4_state(struct si_screen 
*sscreen,
                si_shader_ps(shader);
                break;
        default:
                assert(0);
        }
 }
 
 static unsigned si_get_alpha_test_func(struct si_context *sctx)
 {
        /* Alpha-test should be disabled if colorbuffer 0 is integer. */
-       if (sctx->queued.named.dsa &&
-           !sctx->framebuffer.cb0_is_integer)
+       if (sctx->queued.named.dsa)
                return sctx->queued.named.dsa->alpha_func;
 
        return PIPE_FUNC_ALWAYS;
 }
 
 /* Compute the key for the hw shader variant */
 static inline void si_shader_selector_key(struct pipe_context *ctx,
                                          struct si_shader_selector *sel,
                                          union si_shader_key *key)
 {
@@ -933,22 +932,21 @@ static inline void si_shader_selector_key(struct 
pipe_context *ctx,
                        bool is_poly = (sctx->current_rast_prim >= 
PIPE_PRIM_TRIANGLES &&
                                        sctx->current_rast_prim <= 
PIPE_PRIM_POLYGON) ||
                                       sctx->current_rast_prim >= 
PIPE_PRIM_TRIANGLES_ADJACENCY;
                        bool is_line = !is_poly && sctx->current_rast_prim != 
PIPE_PRIM_POINTS;
 
                        key->ps.prolog.color_two_side = rs->two_side && 
sel->info.colors_read;
                        key->ps.prolog.flatshade_colors = rs->flatshade && 
sel->info.colors_read;
 
                        if (sctx->queued.named.blend) {
                                key->ps.epilog.alpha_to_one = 
sctx->queued.named.blend->alpha_to_one &&
-                                                             
rs->multisample_enable &&
-                                                             
!sctx->framebuffer.cb0_is_integer;
+                                                             
rs->multisample_enable;
                        }
 
                        key->ps.prolog.poly_stipple = rs->poly_stipple_enable 
&& is_poly;
                        key->ps.epilog.poly_line_smoothing = ((is_poly && 
rs->poly_smooth) ||
                                                              (is_line && 
rs->line_smooth)) &&
                                                             
sctx->framebuffer.nr_samples <= 1;
                        key->ps.epilog.clamp_color = rs->clamp_fragment_color;
 
                        if (rs->force_persample_interp &&
                            rs->multisample_enable &&
-- 
2.7.4

_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to