summaryrefslogtreecommitdiffstats
path: root/include/GL
diff options
context:
space:
mode:
authorDave Airlie <[email protected]>2018-12-27 14:26:04 +1000
committerDave Airlie <[email protected]>2019-01-25 04:27:45 +1000
commitdb83a2b40f95fa3b9a741e9797dbf3e18f065a71 (patch)
treea410471e142e0f589fcb1f7ac2b5dbae2e588258 /include/GL
parent281421e1bc1415f608514eb633c47d3f3a72e1eb (diff)
dri_interface: add put shm image2 (v2)
This adds a new interface to the swrast interface to fix an shm put image bug. The current code adds the x,y src offsets into the offset parameters, however if the x offset is > 0, and the put image copies up to the height of the image, this can trigger an X server validation check to fail and the renderering to get BadMatch. This patch fixes it to pass the x offset coord in as a src x. We cannot pass the Y coordinate due to the horrible code mangling the image w/h vs stride in swrastXPutImage. v2: drop srcx,y from api Cc: <[email protected]> Reviewed-by: Adam Jackson <[email protected]>
Diffstat (limited to 'include/GL')
-rw-r--r--include/GL/internal/dri_interface.h19
1 files changed, 18 insertions, 1 deletions
diff --git a/include/GL/internal/dri_interface.h b/include/GL/internal/dri_interface.h
index 072f3799eac..f2e46f65f92 100644
--- a/include/GL/internal/dri_interface.h
+++ b/include/GL/internal/dri_interface.h
@@ -589,7 +589,7 @@ struct __DRIdamageExtensionRec {
* SWRast Loader extension.
*/
#define __DRI_SWRAST_LOADER "DRI_SWRastLoader"
-#define __DRI_SWRAST_LOADER_VERSION 4
+#define __DRI_SWRAST_LOADER_VERSION 5
struct __DRIswrastLoaderExtensionRec {
__DRIextension base;
@@ -649,6 +649,23 @@ struct __DRIswrastLoaderExtensionRec {
void (*getImageShm)(__DRIdrawable *readable,
int x, int y, int width, int height,
int shmid, void *loaderPrivate);
+
+ /**
+ * Put shm image to drawable (v2)
+ *
+ * The original version fixes srcx/y to 0, and expected
+ * the offset to be adjusted. This version allows src x,y
+ * to not be included in the offset. This is needed to
+ * avoid certain overflow checks in the X server, that
+ * result in lost rendering.
+ *
+ * \since 5
+ */
+ void (*putImageShm2)(__DRIdrawable *drawable, int op,
+ int x, int y,
+ int width, int height, int stride,
+ int shmid, char *shmaddr, unsigned offset,
+ void *loaderPrivate);
};
/**