Public bug reported: When Glamor generates textures it does so with format=GL_RGBA and type=GL_UNSIGNED_BYTE using glTexImage2D. However when it writes to these images it does it with format=GL_BGRA and type = GL_UNSIGNED_INT_8_8_8_8_REV using glTexSubImage2D.
This works fine on a desktop (Intel) but when running on a Nexus 4 a GL_INVALID_OPERATION is generated when calling glTexSubImage2D. There seems to be a couple of problems: - The format is originally GL_RGBA and then changed to GL_BGRA. glTexSubImage2D says "GL_INVALID_OPERATION is generated if the texture array has not been defined by a previous glTexImage2D or glCopyTexImage2D operation whose internalformat matches the format of glTexSubImage2D." - type GL_UNSIGNED_INT_8_8_8_8_REV is an extension and doesn't seem to be supported on the Nexus 4. By changing the original format to GL_RGBA (in glamor/glamor_utils.h) and the glTexSubImage2D to use format=GL_RGBA type=GL_UNSIGNED_BYTE (glamor/glamor_transfer.c) we can get this to work. The question is - is the current Glamor code to aggressive in using extensions or should it be able to better detect which method is appropriate for each driver? Are there other issues with the X format the pixmap data is in? ** Affects: xorg-server (Ubuntu) Importance: High Assignee: Robert Ancell (robert-ancell) Status: Triaged ** Tags: xmir ** Tags added: xmir ** Changed in: xorg-server (Ubuntu) Status: New => Triaged ** Changed in: xorg-server (Ubuntu) Importance: Undecided => High ** Changed in: xorg-server (Ubuntu) Assignee: (unassigned) => Robert Ancell (robert-ancell) -- You received this bug notification because you are a member of Desktop Packages, which is subscribed to xorg-server in Ubuntu. https://bugs.launchpad.net/bugs/1493596 Title: Glamor chooses texture format that don't work on Nexus 4 Status in xorg-server package in Ubuntu: Triaged Bug description: When Glamor generates textures it does so with format=GL_RGBA and type=GL_UNSIGNED_BYTE using glTexImage2D. However when it writes to these images it does it with format=GL_BGRA and type = GL_UNSIGNED_INT_8_8_8_8_REV using glTexSubImage2D. This works fine on a desktop (Intel) but when running on a Nexus 4 a GL_INVALID_OPERATION is generated when calling glTexSubImage2D. There seems to be a couple of problems: - The format is originally GL_RGBA and then changed to GL_BGRA. glTexSubImage2D says "GL_INVALID_OPERATION is generated if the texture array has not been defined by a previous glTexImage2D or glCopyTexImage2D operation whose internalformat matches the format of glTexSubImage2D." - type GL_UNSIGNED_INT_8_8_8_8_REV is an extension and doesn't seem to be supported on the Nexus 4. By changing the original format to GL_RGBA (in glamor/glamor_utils.h) and the glTexSubImage2D to use format=GL_RGBA type=GL_UNSIGNED_BYTE (glamor/glamor_transfer.c) we can get this to work. The question is - is the current Glamor code to aggressive in using extensions or should it be able to better detect which method is appropriate for each driver? Are there other issues with the X format the pixmap data is in? To manage notifications about this bug go to: https://bugs.launchpad.net/ubuntu/+source/xorg-server/+bug/1493596/+subscriptions -- Mailing list: https://launchpad.net/~desktop-packages Post to : desktop-packages@lists.launchpad.net Unsubscribe : https://launchpad.net/~desktop-packages More help : https://help.launchpad.net/ListHelp