glamor: Add 30bit RGB color format support
Signed-off-by: Hawking Zhang <Hawking.Zhang@amd.com> [ Michel Dänzer: Adapt to glamor changes since 1.19 ] Signed-off-by: Michel Dänzer <michel.daenzer@amd.com> Acked-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
parent
fc8b7d05e7
commit
9a416a478c
|
@ -376,14 +376,17 @@ glamor_back_pixmap_from_fd(PixmapPtr pixmap,
|
|||
|
||||
glamor_egl = glamor_egl_get_screen_private(scrn);
|
||||
|
||||
if (bpp != 32 || !(depth == 24 || depth == 32) || width == 0 || height == 0)
|
||||
if (bpp != 32 || !(depth == 24 || depth == 32 || depth == 30) || width == 0 || height == 0)
|
||||
return FALSE;
|
||||
|
||||
import_data.fd = fd;
|
||||
import_data.width = width;
|
||||
import_data.height = height;
|
||||
import_data.stride = stride;
|
||||
import_data.format = GBM_FORMAT_ARGB8888;
|
||||
if (depth == 30)
|
||||
import_data.format = GBM_FORMAT_ARGB2101010;
|
||||
else
|
||||
import_data.format = GBM_FORMAT_ARGB8888;
|
||||
bo = gbm_bo_import(glamor_egl->gbm, GBM_BO_IMPORT_FD, &import_data, 0);
|
||||
if (!bo)
|
||||
return FALSE;
|
||||
|
|
|
@ -123,7 +123,10 @@ _glamor_create_tex(glamor_screen_private *glamor_priv,
|
|||
int w, int h, GLenum format)
|
||||
{
|
||||
unsigned int tex;
|
||||
GLenum iformat = format;
|
||||
|
||||
if (format == GL_RGB10_A2)
|
||||
format = GL_RGBA;
|
||||
glamor_make_current(glamor_priv);
|
||||
glGenTextures(1, &tex);
|
||||
glBindTexture(GL_TEXTURE_2D, tex);
|
||||
|
@ -132,7 +135,7 @@ _glamor_create_tex(glamor_screen_private *glamor_priv,
|
|||
if (format == glamor_priv->one_channel_format && format == GL_RED)
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_SWIZZLE_A, GL_RED);
|
||||
glamor_priv->suppress_gl_out_of_memory_logging = true;
|
||||
glTexImage2D(GL_TEXTURE_2D, 0, format, w, h, 0,
|
||||
glTexImage2D(GL_TEXTURE_2D, 0, iformat, w, h, 0,
|
||||
format, GL_UNSIGNED_BYTE, NULL);
|
||||
glamor_priv->suppress_gl_out_of_memory_logging = false;
|
||||
|
||||
|
|
|
@ -33,6 +33,10 @@ glamor_format_for_pixmap(PixmapPtr pixmap, GLenum *format, GLenum *type)
|
|||
*format = GL_BGRA;
|
||||
*type = GL_UNSIGNED_INT_8_8_8_8_REV;
|
||||
break;
|
||||
case 30:
|
||||
*format = GL_BGRA;
|
||||
*type = GL_UNSIGNED_INT_2_10_10_10_REV;
|
||||
break;
|
||||
case 16:
|
||||
*format = GL_RGB;
|
||||
*type = GL_UNSIGNED_SHORT_5_6_5;
|
||||
|
|
|
@ -619,6 +619,9 @@ gl_iformat_for_pixmap(PixmapPtr pixmap)
|
|||
if (glamor_priv->gl_flavor == GLAMOR_GL_DESKTOP &&
|
||||
((pixmap)->drawable.depth == 1 || (pixmap)->drawable.depth == 8)) {
|
||||
return glamor_priv->one_channel_format;
|
||||
} else if (glamor_priv->gl_flavor == GLAMOR_GL_DESKTOP &&
|
||||
(pixmap)->drawable.depth == 30) {
|
||||
return GL_RGB10_A2;
|
||||
} else {
|
||||
return GL_RGBA;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user