[Mesa-dev] [PATCH 2/2] NV_vdpau_interop: fix IsSurfaceNV return type

Grigori Goronzy greg at chown.ath.cx
Sun Mar 2 03:57:04 PST 2014


The spec incorrectly used void as return type, when it should have
been GLboolean. This has now been fixed. According to Nvidia, their
implementation always used GLboolean.
---
 include/GL/glext.h                      | 2 +-
 src/mapi/glapi/gen/NV_vdpau_interop.xml | 1 +
 src/mesa/main/vdpau.c                   | 9 +++++----
 src/mesa/main/vdpau.h                   | 2 +-
 4 files changed, 8 insertions(+), 6 deletions(-)

diff --git a/include/GL/glext.h b/include/GL/glext.h
index 7d6033e..62bae4c 100644
--- a/include/GL/glext.h
+++ b/include/GL/glext.h
@@ -9658,7 +9658,7 @@ GLAPI void APIENTRY glVDPAUInitNV (const void *vdpDevice, const void *getProcAdd
 GLAPI void APIENTRY glVDPAUFiniNV (void);
 GLAPI GLvdpauSurfaceNV APIENTRY glVDPAURegisterVideoSurfaceNV (const void *vdpSurface, GLenum target, GLsizei numTextureNames, const GLuint *textureNames);
 GLAPI GLvdpauSurfaceNV APIENTRY glVDPAURegisterOutputSurfaceNV (const void *vdpSurface, GLenum target, GLsizei numTextureNames, const GLuint *textureNames);
-GLAPI void APIENTRY glVDPAUIsSurfaceNV (GLvdpauSurfaceNV surface);
+GLAPI GLboolean APIENTRY glVDPAUIsSurfaceNV (GLvdpauSurfaceNV surface);
 GLAPI void APIENTRY glVDPAUUnregisterSurfaceNV (GLvdpauSurfaceNV surface);
 GLAPI void APIENTRY glVDPAUGetSurfaceivNV (GLvdpauSurfaceNV surface, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values);
 GLAPI void APIENTRY glVDPAUSurfaceAccessNV (GLvdpauSurfaceNV surface, GLenum access);
diff --git a/src/mapi/glapi/gen/NV_vdpau_interop.xml b/src/mapi/glapi/gen/NV_vdpau_interop.xml
index cf5f0ed..0b19e1a 100644
--- a/src/mapi/glapi/gen/NV_vdpau_interop.xml
+++ b/src/mapi/glapi/gen/NV_vdpau_interop.xml
@@ -29,6 +29,7 @@
     </function>
 
     <function name="VDPAUIsSurfaceNV" offset="assign">
+        <return type="GLboolean"/>
 	<param name="surface" type="GLintptr"/>
     </function>
 
diff --git a/src/mesa/main/vdpau.c b/src/mesa/main/vdpau.c
index 3597576..c2cf206 100644
--- a/src/mesa/main/vdpau.c
+++ b/src/mesa/main/vdpau.c
@@ -205,7 +205,7 @@ _mesa_VDPAURegisterOutputSurfaceNV(const GLvoid *vdpSurface, GLenum target,
                            numTextureNames, textureNames);
 }
 
-void GLAPIENTRY
+GLboolean GLAPIENTRY
 _mesa_VDPAUIsSurfaceNV(GLintptr surface)
 {
    struct vdp_surface *surf = (struct vdp_surface *)surface;
@@ -213,13 +213,14 @@ _mesa_VDPAUIsSurfaceNV(GLintptr surface)
 
    if (!ctx->vdpDevice || !ctx->vdpGetProcAddress || !ctx->vdpSurfaces) {
       _mesa_error(ctx, GL_INVALID_OPERATION, "VDPAUIsSurfaceNV");
-      return;
+      return false;
    }
 
    if (!_mesa_set_search(ctx->vdpSurfaces, _mesa_hash_pointer(surf), surf)) {
-      _mesa_error(ctx, GL_INVALID_VALUE, "VDPAUIsSurfaceNV");
-      return;
+      return false;
    }
+
+   return true;
 }
 
 void GLAPIENTRY
diff --git a/src/mesa/main/vdpau.h b/src/mesa/main/vdpau.h
index f32d6da..627609c 100644
--- a/src/mesa/main/vdpau.h
+++ b/src/mesa/main/vdpau.h
@@ -50,7 +50,7 @@ _mesa_VDPAURegisterOutputSurfaceNV(const GLvoid *vdpSurface, GLenum target,
                                    GLsizei numTextureNames,
                                    const GLuint *textureNames);
 
-extern void GLAPIENTRY
+extern GLboolean GLAPIENTRY
 _mesa_VDPAUIsSurfaceNV(GLintptr surface);
 
 extern void GLAPIENTRY
-- 
1.8.3.2



More information about the mesa-dev mailing list