diff options
author | Marek Olšák <marek.olsak@amd.com> | 2016-08-22 13:45:05 +0200 |
---|---|---|
committer | Marek Olšák <marek.olsak@amd.com> | 2016-09-05 18:01:15 +0200 |
commit | 21de3be8e62b2b093569a99550e6356ed2f106b4 (patch) | |
tree | 90eca99db8834a44053c28ff34b68822823fbb03 /src/gallium/drivers/radeon/r600_pipe_common.h | |
parent | 63da0c991d228b61ca36591314098620c511dbce (diff) | |
download | external_mesa3d-21de3be8e62b2b093569a99550e6356ed2f106b4.zip external_mesa3d-21de3be8e62b2b093569a99550e6356ed2f106b4.tar.gz external_mesa3d-21de3be8e62b2b093569a99550e6356ed2f106b4.tar.bz2 |
radeonsi: fix texture format reinterpretation with DCC
DCC is limited in how texture formats can be reinterpreted using texture
views. If we get a view format that is incompatible with the initial
texture format with respect to DCC, disable DCC.
There is a new piglit which tests all format combinations.
What works and what doesn't was deduced by looking at the piglit failures.
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
Diffstat (limited to 'src/gallium/drivers/radeon/r600_pipe_common.h')
-rw-r--r-- | src/gallium/drivers/radeon/r600_pipe_common.h | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/src/gallium/drivers/radeon/r600_pipe_common.h b/src/gallium/drivers/radeon/r600_pipe_common.h index 1924535..624dea3 100644 --- a/src/gallium/drivers/radeon/r600_pipe_common.h +++ b/src/gallium/drivers/radeon/r600_pipe_common.h @@ -757,6 +757,12 @@ bool r600_init_flushed_depth_texture(struct pipe_context *ctx, void r600_print_texture_info(struct r600_texture *rtex, FILE *f); struct pipe_resource *r600_texture_create(struct pipe_screen *screen, const struct pipe_resource *templ); +bool vi_dcc_formats_compatible(enum pipe_format format1, + enum pipe_format format2); +void vi_dcc_disable_if_incompatible_format(struct r600_common_context *rctx, + struct pipe_resource *tex, + unsigned level, + enum pipe_format view_format); struct pipe_surface *r600_create_surface_custom(struct pipe_context *pipe, struct pipe_resource *texture, const struct pipe_surface *templ, |