freedreno/a5xx: fix txf_ms
authorRob Clark <robdclark@gmail.com>
Mon, 30 Jul 2018 14:36:23 +0000 (10:36 -0400)
committerRob Clark <robdclark@gmail.com>
Mon, 30 Jul 2018 16:31:05 +0000 (12:31 -0400)
Somehow this got lost from the initial MSAA patch.

Signed-off-by: Rob Clark <robdclark@gmail.com>
src/gallium/drivers/freedreno/a5xx/fd5_draw.c
src/gallium/drivers/freedreno/freedreno_context.h
src/gallium/drivers/freedreno/freedreno_texture.c

index 9fae44a..aa06b3c 100644 (file)
@@ -117,6 +117,8 @@ fd5_draw_vbo(struct fd_context *ctx, const struct pipe_draw_info *info,
                        .fsaturate_r = fd5_ctx->fsaturate_r,
                        .vastc_srgb = fd5_ctx->vastc_srgb,
                        .fastc_srgb = fd5_ctx->fastc_srgb,
+                       .vsamples = ctx->tex[PIPE_SHADER_VERTEX].samples,
+                       .fsamples = ctx->tex[PIPE_SHADER_FRAGMENT].samples,
                },
                .rasterflat = ctx->rasterizer->flatshade,
                .sprite_coord_enable = ctx->rasterizer->sprite_coord_enable,
index bc7ff61..a93561e 100644 (file)
@@ -52,6 +52,8 @@ struct fd_texture_stateobj {
        struct pipe_sampler_state *samplers[PIPE_MAX_SAMPLERS];
        unsigned num_samplers;
        unsigned valid_samplers;
+       /* number of samples per sampler, 2 bits per sampler: */
+       uint32_t samples;
 };
 
 struct fd_program_stateobj {
index 1487f74..5ba851f 100644 (file)
@@ -70,6 +70,7 @@ static void set_sampler_views(struct fd_texture_stateobj *tex,
                unsigned start, unsigned nr, struct pipe_sampler_view **views)
 {
        unsigned i;
+       unsigned samplers = 0;
 
        for (i = 0; i < nr; i++) {
                struct pipe_sampler_view *view = views ? views[i] : NULL;
@@ -82,6 +83,13 @@ static void set_sampler_views(struct fd_texture_stateobj *tex,
        }
 
        tex->num_textures = util_last_bit(tex->valid_textures);
+
+       for (i = 0; i < tex->num_textures; i++) {
+               uint nr_samples = tex->textures[i]->texture->nr_samples;
+               samplers |= (nr_samples >> 1) << (i * 2);
+       }
+
+       tex->samples = samplers;
 }
 
 void