[Mesa-dev] [PATCH 09/14] mesa_glinterop: fix GL interop *_VERSION comments
Emil Velikov
emil.l.velikov at gmail.com
Tue May 24 20:16:29 UTC 2016
On 24 May 2016 at 17:38, Marek Olšák <maraeo at gmail.com> wrote:
> On Tue, May 24, 2016 at 4:32 PM, Emil Velikov <emil.l.velikov at gmail.com> wrote:
>> From: Emil Velikov <emil.velikov at collabora.com>
>>
>> Using the macro to set the version is wrong and ill-advised. Please don't
>> do it.
>>
>> Cc: Marek Olšák <marek.olsak at amd.com>
>> Signed-off-by: Emil Velikov <emil.velikov at collabora.com>
>> ---
>> Marek, now things start to unravel as to why you were not too excited on
>> the idea. Hopefully this comment makes things clearer/more descriptive.
>> If not please let me know how we can improve it.
>> ---
>> include/GL/mesa_glinterop.h | 9 ++++++---
>> 1 file changed, 6 insertions(+), 3 deletions(-)
>>
>> diff --git a/include/GL/mesa_glinterop.h b/include/GL/mesa_glinterop.h
>> index 5c172c6..f637409 100644
>> --- a/include/GL/mesa_glinterop.h
>> +++ b/include/GL/mesa_glinterop.h
>> @@ -93,7 +93,8 @@ enum {
>> * Device information returned by Mesa.
>> */
>> typedef struct _mesa_glinterop_device_info {
>> - /* The caller should set this to: MESA_GLINTEROP_DEVICE_INFO_VERSION */
>> + /* The caller should set this to the version of the struct they support */
>> + /* NOTE: Do not use the MESA_GLINTEROP_DEVICE_INFO_VERSION macro */
>> uint32_t struct_version;
>>
>> /* PCI location */
>> @@ -124,7 +125,8 @@ typedef struct _mesa_glinterop_device_info {
>> * Input parameters to Mesa interop export functions.
>> */
>> typedef struct _mesa_glinterop_export_in {
>> - /* The caller should set this to: MESA_GLINTEROP_EXPORT_IN_VERSION */
>> + /* The caller should set this to the version of the struct they support */
>> + /* NOTE: Do not use the MESA_GLINTEROP_EXPORT_IN_VERSION macro */
>> uint32_t struct_version;
>>
>> /* One of the following:
>> @@ -183,7 +185,8 @@ typedef struct _mesa_glinterop_export_in {
>> * Outputs of Mesa interop export functions.
>> */
>> typedef struct _mesa_glinterop_export_out {
>> - /* The caller should set this to: MESA_GLINTEROP_EXPORT_OUT_VERSION */
>> + /* The caller should set this to the version of the struct they support */
>> + /* NOTE: Do not use the MESA_GLINTEROP_EXPORT_OUT_VERSION macro */
>> uint32_t struct_version;
>
> Obviously, the comments don't apply to closed-source projects or any
> open source projects that just import the header and use the interface
> correctly and completely. If that's the case, using the VERSION macros
> makes sense. It had never been my intention for other projects to get
> this header from /usr/include/GL. Maybe we shouldn't install it.
>
> This patch would be OK if the header was used from /usr/include/GL
> only. Since that's not the expected usage, this patch is NAK.
>
I wasn't thinking/implying that the header should be installed...
maybe it should, maybe it shouldn't. The more important part is that
things are fragile as-is.
For example:
User I needs v2 of export_in. Header is updated and implementation is done.
User A needs v2 of export_out. Header is updated and one will
- need to implement both v2 export_out _and_ v2 export_in (even if v2
_in cannot be done for time/other reasons), or
- have to hack the header locally (a not good idea in itself), or
- don't implement v2 _in, in which case we'll crash.
With ^^ in mind, I think it makes sense to advice against using the
macro, correct ?
-Emil
More information about the mesa-dev
mailing list