mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-05 11:48:06 +02:00
freedreno/a6xx: fix blitter crash
Fixes a crash with unsupported formats in dEQP-GLES3.functional.texture.format.sized.2d.rgb9_e5_pot Also fixes gpu hangs with some formats that are supported, but which we don't know what internal-format to use for the blitter, for ex dEQP-GLES3.functional.texture.format.sized.2d_array.rgb10_a2_pot Signed-off-by: Rob Clark <robdclark@gmail.com>
This commit is contained in:
parent
cca1e9606c
commit
85cd4df47f
1 changed files with 17 additions and 0 deletions
|
|
@ -52,6 +52,19 @@ ok_dims(const struct pipe_resource *r, const struct pipe_box *b, int lvl)
|
|||
(b->z >= 0) && (b->z + b->depth <= last_layer);
|
||||
}
|
||||
|
||||
static bool
|
||||
ok_format(enum pipe_format pfmt)
|
||||
{
|
||||
enum a6xx_color_fmt fmt = fd6_pipe2color(pfmt);
|
||||
if (fmt == ~0)
|
||||
return false;
|
||||
|
||||
if (fd6_ifmt(fmt) == 0)
|
||||
return false;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
#define DEBUG_BLIT_FALLBACK 0
|
||||
#define fail_if(cond) \
|
||||
do { \
|
||||
|
|
@ -81,6 +94,10 @@ can_do_blit(const struct pipe_blit_info *info)
|
|||
fail_if(util_format_is_compressed(info->src.format) !=
|
||||
util_format_is_compressed(info->src.format));
|
||||
|
||||
/* Fail if unsupported format: */
|
||||
fail_if(!ok_format(info->src.format));
|
||||
fail_if(!ok_format(info->dst.format));
|
||||
|
||||
/* ... but only if they're the same compression format. */
|
||||
fail_if(util_format_is_compressed(info->src.format) &&
|
||||
info->src.format != info->dst.format);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue