diff options
Diffstat (limited to 'src/mesa/state_tracker/st_cb_eglimage.c')
-rw-r--r-- | src/mesa/state_tracker/st_cb_eglimage.c | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/src/mesa/state_tracker/st_cb_eglimage.c b/src/mesa/state_tracker/st_cb_eglimage.c index 1782d15..7bea565 100644 --- a/src/mesa/state_tracker/st_cb_eglimage.c +++ b/src/mesa/state_tracker/st_cb_eglimage.c @@ -119,6 +119,24 @@ st_bind_surface(struct gl_context *ctx, GLenum target, texFormat = st_pipe_format_to_mesa_format(ps->format); + /* TODO RequiredTextureImageUnits should probably be reset back + * to 1 somewhere if different texture is bound?? + */ + if (texFormat == MESA_FORMAT_NONE) { + switch (ps->format) { + case PIPE_FORMAT_NV12: + texFormat = MESA_FORMAT_R_UNORM8; + texObj->RequiredTextureImageUnits = 2; + break; + case PIPE_FORMAT_IYUV: + texFormat = MESA_FORMAT_R_UNORM8; + texObj->RequiredTextureImageUnits = 3; + break; + default: + unreachable("bad YUV format!"); + } + } + _mesa_init_teximage_fields(ctx, texImage, ps->width, ps->height, 1, 0, internalFormat, texFormat); |