opengl: Do not convert format with glTexImage2D on OpenGL ES
OpenGL ES does not support conversion from the given data format to the internal format with glTexImage2D. Use the given data format as the internal format, and ignore the given alpha channels with GL_TEXTURE_SWIZZLE_A in case the format contains alpha channels. Signed-off-by: Akihiko Odaki <akihiko.odaki@gmail.com> Message-Id: <20210219094803.90860-1-akihiko.odaki@gmail.com> Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
This commit is contained in:
parent
c47c0bcb33
commit
14c235eb40
@ -73,11 +73,20 @@ void surface_gl_create_texture(QemuGLShader *gls,
|
||||
glBindTexture(GL_TEXTURE_2D, surface->texture);
|
||||
glPixelStorei(GL_UNPACK_ROW_LENGTH_EXT,
|
||||
surface_stride(surface) / surface_bytes_per_pixel(surface));
|
||||
if (epoxy_is_desktop_gl()) {
|
||||
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB,
|
||||
surface_width(surface),
|
||||
surface_height(surface),
|
||||
0, surface->glformat, surface->gltype,
|
||||
surface_data(surface));
|
||||
} else {
|
||||
glTexImage2D(GL_TEXTURE_2D, 0, surface->glformat,
|
||||
surface_width(surface),
|
||||
surface_height(surface),
|
||||
0, surface->glformat, surface->gltype,
|
||||
surface_data(surface));
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_SWIZZLE_A, GL_ONE);
|
||||
}
|
||||
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
|
||||
|
Loading…
Reference in New Issue
Block a user