Module: Mesa Branch: master Commit: 3e55df4f83962b4dd29d84be57b697dccab5a364 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=3e55df4f83962b4dd29d84be57b697dccab5a364
Author: Kristian H. Kristensen <[email protected]> Date: Mon Nov 5 21:23:27 2018 -0800 freedreno: Add support for EXT_multisampled_render_to_texture There is not much to do in freedreno - tile layout and multisample state for gmem renderings is programmed based on the pfb sample count, while resolve blits take the destination sample count from the resource. Reviewed-by: Rob Clark <[email protected]> Signed-off-by: Kristian H. Kristensen <[email protected]> --- src/gallium/drivers/freedreno/freedreno_batch_cache.c | 4 +++- src/gallium/drivers/freedreno/freedreno_screen.c | 3 +++ src/gallium/drivers/freedreno/freedreno_surface.c | 1 + 3 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/gallium/drivers/freedreno/freedreno_batch_cache.c b/src/gallium/drivers/freedreno/freedreno_batch_cache.c index 408d48ccdb..45cd9c172d 100644 --- a/src/gallium/drivers/freedreno/freedreno_batch_cache.c +++ b/src/gallium/drivers/freedreno/freedreno_batch_cache.c @@ -81,7 +81,8 @@ struct key { struct { struct pipe_resource *texture; union pipe_surface_desc u; - uint16_t pos, format; + uint8_t pos, samples; + uint16_t format; } surf[0]; }; @@ -401,6 +402,7 @@ key_surf(struct key *key, unsigned idx, unsigned pos, struct pipe_surface *psurf key->surf[idx].texture = psurf->texture; key->surf[idx].u = psurf->u; key->surf[idx].pos = pos; + key->surf[idx].samples = psurf->nr_samples; key->surf[idx].format = psurf->format; } diff --git a/src/gallium/drivers/freedreno/freedreno_screen.c b/src/gallium/drivers/freedreno/freedreno_screen.c index ab83487aef..03b358782c 100644 --- a/src/gallium/drivers/freedreno/freedreno_screen.c +++ b/src/gallium/drivers/freedreno/freedreno_screen.c @@ -225,6 +225,9 @@ fd_screen_get_param(struct pipe_screen *pscreen, enum pipe_cap param) case PIPE_CAP_TEXTURE_MULTISAMPLE: return is_a5xx(screen) || is_a6xx(screen); + case PIPE_CAP_SURFACE_SAMPLE_COUNT: + return is_a6xx(screen); + case PIPE_CAP_DEPTH_CLIP_DISABLE: return is_a3xx(screen) || is_a4xx(screen); diff --git a/src/gallium/drivers/freedreno/freedreno_surface.c b/src/gallium/drivers/freedreno/freedreno_surface.c index 6f415f6999..24da54798b 100644 --- a/src/gallium/drivers/freedreno/freedreno_surface.c +++ b/src/gallium/drivers/freedreno/freedreno_surface.c @@ -53,6 +53,7 @@ fd_create_surface(struct pipe_context *pctx, psurf->format = surf_tmpl->format; psurf->width = u_minify(ptex->width0, level); psurf->height = u_minify(ptex->height0, level); + psurf->nr_samples = surf_tmpl->nr_samples; if (ptex->target == PIPE_BUFFER) { psurf->u.buf.first_element = surf_tmpl->u.buf.first_element; _______________________________________________ mesa-commit mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/mesa-commit
