Rob Clark <[email protected]> writes: > Ok, so the basic problem with the YUV tests is that they currently > completely ignore driver/hw pitch requirements, since the code that > allocates the buffer doesn't know the pixel format, only the 'cpp'. > > The yuv test creates a small 4x4 yuv eglimage. If, say, the hardware > requires the pitch to be aligned to, say, 32pixels, everything is fine > for the Y plane, but the subsampled U/V or U+V plane has half as many > pixels. (This did help me catch a bug in driver, not rejecting the > dmabuf import with invalid pitch, but that doesn't help to get the > piglit tests running.) > > The best approach I could come up with to fix this is to pass the > fourcc all the way down to the code that creates the dmabuf (and copies > src data into the dmabuf). Unfortunately this makes the patch a bit > bigger than I was hoping, and not really sure a good way to split it > up. > > This is tested on i965 (with the intel dma-buf backend) and freedreno > (with the gbm dma-buf backend). In the gbm case, it requires new > gbm format values for R8 and GR88, which is on mesa master as of > this morning. (So I bumped the gbm version dependency to 12.1.)
> diff --git a/tests/util/piglit-framework-gl.c
> b/tests/util/piglit-framework-gl.c
> index 9748ddf..c7c91fe 100644
> --- a/tests/util/piglit-framework-gl.c
> +++ b/tests/util/piglit-framework-gl.c
> @@ -265,22 +265,15 @@ piglit_set_reshape_func(void (*func)(int w, int h))
> gl_fw->set_reshape_func(gl_fw, func);
> }
>
> -
> enum piglit_result
> -piglit_create_dma_buf(unsigned w, unsigned h, unsigned cpp,
> +piglit_create_dma_buf(unsigned w, unsigned h, unsigned fourcc,
> const void *src_data, unsigned src_stride,
> - struct piglit_dma_buf **buf, int *fd,
> - unsigned *stride, unsigned *offset)
> + struct piglit_dma_buf **buf)
> {
> - *fd = 0;
> - *stride = 0;
> - *offset = 0;
> -
> if (!gl_fw->create_dma_buf)
> return PIGLIT_SKIP;
>
> - return gl_fw->create_dma_buf(w, h, cpp, src_data, src_stride, buf, fd,
> - stride, offset);
> + return gl_fw->create_dma_buf(w, h, fourcc, src_data, buf);
> }
You've dropped src_stride from the backend, but not from this function's
prototype?
Seems like while you're changing the signature of this, you should drop
the dead src_stride, too.
I'm pretty into this patch overall, though.
signature.asc
Description: PGP signature
_______________________________________________ Piglit mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/piglit
