Tomeu Vizoso <tomeu.viz...@collabora.com> writes: > Virgl could save a lot of work converting buffers in the host side > between formats if Mesa supported a bunch of other formats when reading > pixels. > > This commit adds cases to handle specific formats so that the values > reported by the two calls match more closely the underlying native > formats. > > In GLES is important that IMPLEMENTATION_COLOR_READ_* return the native > format and data type because the spec only allows reading with those, > besides GL_RGBA or GL_RGBA_INTEGER. > > Additionally, because virgl currently doesn't implement such > conversions, this commit fixes several tests in > dEQP-GLES3.functional.fbo.color.clear.*, when using virgl in the guest > side. > > The logic is based on knowledge that is shared with > _mesa_format_matches_format_and_type() but we cannot assert that the > results match as we don't have all the starting information at both > points. So leave the assert out and hope CI comes soon to save us all. > > v2: * Let R10G10B10A2_UINT fall back to GL_RGBA_INTEGER (Eric Anholt) > * Assert with _mesa_format_matches_format_and_type (Eric Anholt) > > v3: * Remove the assert, as it won't be reliable (Eric Anholt) > > v4: * Use _mesa_is_format_integer in the fallback (Eric Anholt) > > Signed-off-by: Tomeu Vizoso <tomeu.viz...@collabora.com> > Reviewed-by: Gurchetan Singh <gurchetansi...@chromium.org> > --- > src/mesa/main/framebuffer.c | 79 ++++++++++++++++++++++--------------- > 1 file changed, 47 insertions(+), 32 deletions(-) > > diff --git a/src/mesa/main/framebuffer.c b/src/mesa/main/framebuffer.c > index 3ec8b91eaa2c..8e09620966cf 100644 > --- a/src/mesa/main/framebuffer.c > +++ b/src/mesa/main/framebuffer.c > @@ -844,22 +844,53 @@ _mesa_get_color_read_format(struct gl_context *ctx, > } > else { > const mesa_format format = fb->_ColorReadBuffer->Format; > - const GLenum data_type = _mesa_get_format_datatype(format); > + GLenum data_type; > + GLuint comps; > > - if (format == MESA_FORMAT_B8G8R8A8_UNORM) > + _mesa_uncompressed_format_to_type_and_comps(format, &data_type, > &comps);
This should move down below the format switch, it looks like. Other than that, I think this gets things right. Reviewed-by: Eric Anholt <e...@anholt.net>
signature.asc
Description: PGP signature
_______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev