On Tue, 2017-05-16 at 10:33 -0400, Rob Clark wrote: > Don't reject YUV formats that the driver doesn't handle natively, since > mesa/st already knows how to lower this in shader. > > Fixes: 83e9de2 ("st/mesa: EGLImageTarget* error handling") > Cc: 17.1 <mesa-sta...@lists.freedesktop.org > Signed-off-by: Rob Clark <robdcl...@gmail.com> > --- > src/mesa/state_tracker/st_cb_eglimage.c | 32 ++++++++++++++++++++++++++++++-- > 1 file changed, 30 insertions(+), 2 deletions(-) > > diff --git a/src/mesa/state_tracker/st_cb_eglimage.c > b/src/mesa/state_tracker/st_cb_eglimage.c > index 3a62ef7..a104b64 100644 > --- a/src/mesa/state_tracker/st_cb_eglimage.c > +++ b/src/mesa/state_tracker/st_cb_eglimage.c > @@ -39,6 +39,35 @@ > #include "st_sampler_view.h" > #include "util/u_surface.h" > > +static bool > +is_format_supported(struct pipe_screen *screen, enum pipe_format format, > + unsigned nr_samples, unsigned usage) > +{ > + bool supported = screen->is_format_supported(screen, format, > PIPE_TEXTURE_2D, > + nr_samples, usage); > + > + /* for sampling, some formats can be emulated.. it doesn't matter that > + * the surface will have a format that the driver can't cope with because > + * we'll give it sampler view formats that it can deal with and generate > + * a shader variant that converts. > + */ > + if ((usage == PIPE_BIND_SAMPLER_VIEW) && !supported) { > + if (format == PIPE_FORMAT_IYUV) { > + supported = screen->is_format_supported(screen, > PIPE_FORMAT_R8_UNORM, > + PIPE_TEXTURE_2D, nr_samples, > + usage); > + } else if (format == PIPE_FORMAT_NV12) { > + supported = screen->is_format_supported(screen, > PIPE_FORMAT_R8_UNORM, > + PIPE_TEXTURE_2D, nr_samples, > + usage) && > + screen->is_format_supported(screen, > PIPE_FORMAT_R8G8_UNORM, > + PIPE_TEXTURE_2D, nr_samples, > + usage); > + } > + } > + > + return supported; > +}
But this only works for target == GL_TEXTURE_EXTERNAL_OES, right? If so, I think we would have to pass the target enum through st_egl_image_get_surface to is_format_supported and make a decision based on that. regards Philipp _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev