- _mesa_init_teximage_fields(ctx, target, texImage,
- ps->width, ps->height, 1, 0, internalFormat);
- texImage->TexFormat = st_pipe_format_to_mesa_format(ps->format);
- _mesa_set_fetch_functions(texImage, 2);
+ 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);