Skip to content

ac/surface: don't oversize surf_size

Pierre-Eric Pelloux-Prayer requested to merge pepp/mesa:radeonsi_fix_6131 into main

What does this MR do and why?

ac/surface: don't oversize surf_size

Yet another iteration on the same YUV surfaces.

The change from 87ecfdfbf0a has 2 odd things:
* it's using MAX2(original value, new value) but the point of updating
  surf_slice_size / surf_size is to make it correct relative to the new
  value of surf_pitch
* it's multiplying surf_pitch (= number of elements per row) by height (ok)
  by surf->bpe (= number of bytes per element) by surf->blk_w (= number of
  "horizontal" pixels in an element) so the end unit doesn't make sense.

Fix this by computing a reasonnable value based on unit: the surf_slice_size
is the number of elements per row (surf_pitch) x number of bytes per element
(bpe) x number of rows.

This makes the expected size correct and thus fixes users of eglCreateImageKHR,
like the issue #6131.

I tested a bunch of gst pipelines and ffmpeg scripts on various files I have
and didn't notice any issues (on gfx10.3 and gfx9).

Fixes: 87ecfdfbf0a ("ac/surface: adapt surf_size when modifying surf_pitch")

Merge request reports