mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-02 05:48:07 +02:00
freedreno/a6xx: handle non-UBWC-compatible texture views
Signed-off-by: Rob Clark <robdclark@chromium.org> Reviewed-by: Kristian H. Kristensen <hoegsberg@google.com>
This commit is contained in:
parent
fe5c7b2b75
commit
dac3bc9862
3 changed files with 23 additions and 0 deletions
|
|
@ -260,6 +260,24 @@ fd6_fill_ubwc_buffer_sizes(struct fd_resource *rsc)
|
|||
return meta_size;
|
||||
}
|
||||
|
||||
/**
|
||||
* Ensure the rsc is in an ok state to be used with the specified format.
|
||||
* This handles the case of UBWC buffers used with non-UBWC compatible
|
||||
* formats, by triggering an uncompress.
|
||||
*/
|
||||
void
|
||||
fd6_validate_format(struct fd_context *ctx, struct fd_resource *rsc,
|
||||
enum pipe_format format)
|
||||
{
|
||||
if (!rsc->ubwc_size)
|
||||
return;
|
||||
|
||||
if (ok_ubwc_format(fd6_pipe2color(format)))
|
||||
return;
|
||||
|
||||
fd_resource_uncompress(ctx, rsc);
|
||||
}
|
||||
|
||||
uint32_t
|
||||
fd6_setup_slices(struct fd_resource *rsc)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -31,6 +31,8 @@
|
|||
#include "freedreno_resource.h"
|
||||
|
||||
uint32_t fd6_fill_ubwc_buffer_sizes(struct fd_resource *rsc);
|
||||
void fd6_validate_format(struct fd_context *ctx, struct fd_resource *rsc,
|
||||
enum pipe_format format);
|
||||
uint32_t fd6_setup_slices(struct fd_resource *rsc);
|
||||
|
||||
#endif /* FD6_RESOURCE_H_ */
|
||||
|
|
|
|||
|
|
@ -33,6 +33,7 @@
|
|||
#include "util/hash_table.h"
|
||||
|
||||
#include "fd6_texture.h"
|
||||
#include "fd6_resource.h"
|
||||
#include "fd6_format.h"
|
||||
#include "fd6_emit.h"
|
||||
|
||||
|
|
@ -225,6 +226,8 @@ fd6_sampler_view_create(struct pipe_context *pctx, struct pipe_resource *prsc,
|
|||
if (!so)
|
||||
return NULL;
|
||||
|
||||
fd6_validate_format(fd_context(pctx), rsc, format);
|
||||
|
||||
if (format == PIPE_FORMAT_X32_S8X24_UINT) {
|
||||
rsc = rsc->stencil;
|
||||
format = rsc->base.format;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue