[Mesa-dev] [PATCH 2/2] spirv: bump headers to SPIRV 1.1
Lionel Landwerlin
lionel.g.landwerlin at intel.com
Wed Jan 25 13:56:20 UTC 2017
On 25/01/17 13:13, Bas Nieuwenhuizen wrote:
>
> On Wed, Jan 25, 2017, at 05:06, Lionel Landwerlin wrote:
>> Just to confirm, are you fine with the header update triggering warnings
>> fixed by the following commit?
> Can't you update the switches before updating the header? That would
> avoid any warnings unless I'm missing stuff.
Fair enough, thanks :)
>
>> Thanks!
>>
>> On 25/01/17 12:45, Bas Nieuwenhuizen wrote:
>>> Can you split the switch changes to a different commit? With that,
>>>
>>> Reviewed-by: Bas Nieuwenhuizen <bas at basnieuwenhuizen.nl>
>>>
>>> for the series.
>>>
>>> On Wed, Jan 25, 2017, at 04:39, Lionel Landwerlin wrote:
>>>> Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin at intel.com>
>>>> ---
>>>> src/compiler/spirv/GLSL.std.450.h | 12 ++++--
>>>> src/compiler/spirv/spirv.h | 77
>>>> +++++++++++++++++++++++++++++++++++---
>>>> src/compiler/spirv/spirv_info.c | 6 +++
>>>> src/compiler/spirv/spirv_to_nir.c | 12 ++++++
>>>> src/compiler/spirv/vtn_variables.c | 3 ++
>>>> 5 files changed, 101 insertions(+), 9 deletions(-)
>>>>
>>>> diff --git a/src/compiler/spirv/GLSL.std.450.h
>>>> b/src/compiler/spirv/GLSL.std.450.h
>>>> index d1c9b5c1d4..54cc00e9a8 100644
>>>> --- a/src/compiler/spirv/GLSL.std.450.h
>>>> +++ b/src/compiler/spirv/GLSL.std.450.h
>>>> @@ -1,5 +1,5 @@
>>>> /*
>>>> -** Copyright (c) 2014-2015 The Khronos Group Inc.
>>>> +** Copyright (c) 2014-2016 The Khronos Group Inc.
>>>> **
>>>> ** Permission is hereby granted, free of charge, to any person obtaining
>>>> a copy
>>>> ** of this software and/or associated documentation files (the
>>>> "Materials"),
>>>> @@ -27,8 +27,8 @@
>>>> #ifndef GLSLstd450_H
>>>> #define GLSLstd450_H
>>>>
>>>> -const int GLSLstd450Version = 99;
>>>> -const int GLSLstd450Revision = 3;
>>>> +static const int GLSLstd450Version = 100;
>>>> +static const int GLSLstd450Revision = 3;
>>>>
>>>> enum GLSLstd450 {
>>>> GLSLstd450Bad = 0, // Don't use
>>>> @@ -83,7 +83,7 @@ enum GLSLstd450 {
>>>> GLSLstd450UClamp = 44,
>>>> GLSLstd450SClamp = 45,
>>>> GLSLstd450FMix = 46,
>>>> - GLSLstd450IMix = 47,
>>>> + GLSLstd450IMix = 47, // Reserved
>>>> GLSLstd450Step = 48,
>>>> GLSLstd450SmoothStep = 49,
>>>>
>>>> @@ -121,6 +121,10 @@ enum GLSLstd450 {
>>>> GLSLstd450InterpolateAtSample = 77,
>>>> GLSLstd450InterpolateAtOffset = 78,
>>>>
>>>> + GLSLstd450NMin = 79,
>>>> + GLSLstd450NMax = 80,
>>>> + GLSLstd450NClamp = 81,
>>>> +
>>>> GLSLstd450Count
>>>> };
>>>>
>>>> diff --git a/src/compiler/spirv/spirv.h b/src/compiler/spirv/spirv.h
>>>> index 63bcb2f88d..769c10225d 100644
>>>> --- a/src/compiler/spirv/spirv.h
>>>> +++ b/src/compiler/spirv/spirv.h
>>>> @@ -1,5 +1,5 @@
>>>> /*
>>>> -** Copyright (c) 2014-2015 The Khronos Group Inc.
>>>> +** Copyright (c) 2014-2016 The Khronos Group Inc.
>>>> **
>>>> ** Permission is hereby granted, free of charge, to any person obtaining
>>>> a copy
>>>> ** of this software and/or associated documentation files (the
>>>> "Materials"),
>>>> @@ -50,12 +50,12 @@
>>>>
>>>> typedef unsigned int SpvId;
>>>>
>>>> -#define SPV_VERSION 0x10000
>>>> -#define SPV_REVISION 2
>>>> +#define SPV_VERSION 0x10100
>>>> +#define SPV_REVISION 4
>>>>
>>>> static const unsigned int SpvMagicNumber = 0x07230203;
>>>> -static const unsigned int SpvVersion = 0x00010000;
>>>> -static const unsigned int SpvRevision = 2;
>>>> +static const unsigned int SpvVersion = 0x00010100;
>>>> +static const unsigned int SpvRevision = 4;
>>>> static const unsigned int SpvOpCodeMask = 0xffff;
>>>> static const unsigned int SpvWordCountShift = 16;
>>>>
>>>> @@ -65,6 +65,7 @@ typedef enum SpvSourceLanguage_ {
>>>> SpvSourceLanguageGLSL = 2,
>>>> SpvSourceLanguageOpenCL_C = 3,
>>>> SpvSourceLanguageOpenCL_CPP = 4,
>>>> + SpvSourceLanguageMax = 0x7fffffff,
>>>> } SpvSourceLanguage;
>>>>
>>>> typedef enum SpvExecutionModel_ {
>>>> @@ -75,18 +76,21 @@ typedef enum SpvExecutionModel_ {
>>>> SpvExecutionModelFragment = 4,
>>>> SpvExecutionModelGLCompute = 5,
>>>> SpvExecutionModelKernel = 6,
>>>> + SpvExecutionModelMax = 0x7fffffff,
>>>> } SpvExecutionModel;
>>>>
>>>> typedef enum SpvAddressingModel_ {
>>>> SpvAddressingModelLogical = 0,
>>>> SpvAddressingModelPhysical32 = 1,
>>>> SpvAddressingModelPhysical64 = 2,
>>>> + SpvAddressingModelMax = 0x7fffffff,
>>>> } SpvAddressingModel;
>>>>
>>>> typedef enum SpvMemoryModel_ {
>>>> SpvMemoryModelSimple = 0,
>>>> SpvMemoryModelGLSL450 = 1,
>>>> SpvMemoryModelOpenCL = 2,
>>>> + SpvMemoryModelMax = 0x7fffffff,
>>>> } SpvMemoryModel;
>>>>
>>>> typedef enum SpvExecutionMode_ {
>>>> @@ -121,6 +125,11 @@ typedef enum SpvExecutionMode_ {
>>>> SpvExecutionModeOutputTriangleStrip = 29,
>>>> SpvExecutionModeVecTypeHint = 30,
>>>> SpvExecutionModeContractionOff = 31,
>>>> + SpvExecutionModeInitializer = 33,
>>>> + SpvExecutionModeFinalizer = 34,
>>>> + SpvExecutionModeSubgroupSize = 35,
>>>> + SpvExecutionModeSubgroupsPerWorkgroup = 36,
>>>> + SpvExecutionModeMax = 0x7fffffff,
>>>> } SpvExecutionMode;
>>>>
>>>> typedef enum SpvStorageClass_ {
>>>> @@ -136,6 +145,7 @@ typedef enum SpvStorageClass_ {
>>>> SpvStorageClassPushConstant = 9,
>>>> SpvStorageClassAtomicCounter = 10,
>>>> SpvStorageClassImage = 11,
>>>> + SpvStorageClassMax = 0x7fffffff,
>>>> } SpvStorageClass;
>>>>
>>>> typedef enum SpvDim_ {
>>>> @@ -146,6 +156,7 @@ typedef enum SpvDim_ {
>>>> SpvDimRect = 4,
>>>> SpvDimBuffer = 5,
>>>> SpvDimSubpassData = 6,
>>>> + SpvDimMax = 0x7fffffff,
>>>> } SpvDim;
>>>>
>>>> typedef enum SpvSamplerAddressingMode_ {
>>>> @@ -154,11 +165,13 @@ typedef enum SpvSamplerAddressingMode_ {
>>>> SpvSamplerAddressingModeClamp = 2,
>>>> SpvSamplerAddressingModeRepeat = 3,
>>>> SpvSamplerAddressingModeRepeatMirrored = 4,
>>>> + SpvSamplerAddressingModeMax = 0x7fffffff,
>>>> } SpvSamplerAddressingMode;
>>>>
>>>> typedef enum SpvSamplerFilterMode_ {
>>>> SpvSamplerFilterModeNearest = 0,
>>>> SpvSamplerFilterModeLinear = 1,
>>>> + SpvSamplerFilterModeMax = 0x7fffffff,
>>>> } SpvSamplerFilterMode;
>>>>
>>>> typedef enum SpvImageFormat_ {
>>>> @@ -202,6 +215,7 @@ typedef enum SpvImageFormat_ {
>>>> SpvImageFormatRg8ui = 37,
>>>> SpvImageFormatR16ui = 38,
>>>> SpvImageFormatR8ui = 39,
>>>> + SpvImageFormatMax = 0x7fffffff,
>>>> } SpvImageFormat;
>>>>
>>>> typedef enum SpvImageChannelOrder_ {
>>>> @@ -224,6 +238,8 @@ typedef enum SpvImageChannelOrder_ {
>>>> SpvImageChannelOrdersRGBx = 16,
>>>> SpvImageChannelOrdersRGBA = 17,
>>>> SpvImageChannelOrdersBGRA = 18,
>>>> + SpvImageChannelOrderABGR = 19,
>>>> + SpvImageChannelOrderMax = 0x7fffffff,
>>>> } SpvImageChannelOrder;
>>>>
>>>> typedef enum SpvImageChannelDataType_ {
>>>> @@ -244,6 +260,7 @@ typedef enum SpvImageChannelDataType_ {
>>>> SpvImageChannelDataTypeFloat = 14,
>>>> SpvImageChannelDataTypeUnormInt24 = 15,
>>>> SpvImageChannelDataTypeUnormInt101010_2 = 16,
>>>> + SpvImageChannelDataTypeMax = 0x7fffffff,
>>>> } SpvImageChannelDataType;
>>>>
>>>> typedef enum SpvImageOperandsShift_ {
>>>> @@ -255,6 +272,7 @@ typedef enum SpvImageOperandsShift_ {
>>>> SpvImageOperandsConstOffsetsShift = 5,
>>>> SpvImageOperandsSampleShift = 6,
>>>> SpvImageOperandsMinLodShift = 7,
>>>> + SpvImageOperandsMax = 0x7fffffff,
>>>> } SpvImageOperandsShift;
>>>>
>>>> typedef enum SpvImageOperandsMask_ {
>>>> @@ -275,6 +293,7 @@ typedef enum SpvFPFastMathModeShift_ {
>>>> SpvFPFastMathModeNSZShift = 2,
>>>> SpvFPFastMathModeAllowRecipShift = 3,
>>>> SpvFPFastMathModeFastShift = 4,
>>>> + SpvFPFastMathModeMax = 0x7fffffff,
>>>> } SpvFPFastMathModeShift;
>>>>
>>>> typedef enum SpvFPFastMathModeMask_ {
>>>> @@ -291,17 +310,20 @@ typedef enum SpvFPRoundingMode_ {
>>>> SpvFPRoundingModeRTZ = 1,
>>>> SpvFPRoundingModeRTP = 2,
>>>> SpvFPRoundingModeRTN = 3,
>>>> + SpvFPRoundingModeMax = 0x7fffffff,
>>>> } SpvFPRoundingMode;
>>>>
>>>> typedef enum SpvLinkageType_ {
>>>> SpvLinkageTypeExport = 0,
>>>> SpvLinkageTypeImport = 1,
>>>> + SpvLinkageTypeMax = 0x7fffffff,
>>>> } SpvLinkageType;
>>>>
>>>> typedef enum SpvAccessQualifier_ {
>>>> SpvAccessQualifierReadOnly = 0,
>>>> SpvAccessQualifierWriteOnly = 1,
>>>> SpvAccessQualifierReadWrite = 2,
>>>> + SpvAccessQualifierMax = 0x7fffffff,
>>>> } SpvAccessQualifier;
>>>>
>>>> typedef enum SpvFunctionParameterAttribute_ {
>>>> @@ -313,6 +335,7 @@ typedef enum SpvFunctionParameterAttribute_ {
>>>> SpvFunctionParameterAttributeNoCapture = 5,
>>>> SpvFunctionParameterAttributeNoWrite = 6,
>>>> SpvFunctionParameterAttributeNoReadWrite = 7,
>>>> + SpvFunctionParameterAttributeMax = 0x7fffffff,
>>>> } SpvFunctionParameterAttribute;
>>>>
>>>> typedef enum SpvDecoration_ {
>>>> @@ -359,6 +382,8 @@ typedef enum SpvDecoration_ {
>>>> SpvDecorationNoContraction = 42,
>>>> SpvDecorationInputAttachmentIndex = 43,
>>>> SpvDecorationAlignment = 44,
>>>> + SpvDecorationMaxByteOffset = 45,
>>>> + SpvDecorationMax = 0x7fffffff,
>>>> } SpvDecoration;
>>>>
>>>> typedef enum SpvBuiltIn_ {
>>>> @@ -403,11 +428,21 @@ typedef enum SpvBuiltIn_ {
>>>> SpvBuiltInSubgroupLocalInvocationId = 41,
>>>> SpvBuiltInVertexIndex = 42,
>>>> SpvBuiltInInstanceIndex = 43,
>>>> + SpvBuiltInSubgroupEqMaskKHR = 4416,
>>>> + SpvBuiltInSubgroupGeMaskKHR = 4417,
>>>> + SpvBuiltInSubgroupGtMaskKHR = 4418,
>>>> + SpvBuiltInSubgroupLeMaskKHR = 4419,
>>>> + SpvBuiltInSubgroupLtMaskKHR = 4420,
>>>> + SpvBuiltInBaseVertex = 4424,
>>>> + SpvBuiltInBaseInstance = 4425,
>>>> + SpvBuiltInDrawIndex = 4426,
>>>> + SpvBuiltInMax = 0x7fffffff,
>>>> } SpvBuiltIn;
>>>>
>>>> typedef enum SpvSelectionControlShift_ {
>>>> SpvSelectionControlFlattenShift = 0,
>>>> SpvSelectionControlDontFlattenShift = 1,
>>>> + SpvSelectionControlMax = 0x7fffffff,
>>>> } SpvSelectionControlShift;
>>>>
>>>> typedef enum SpvSelectionControlMask_ {
>>>> @@ -419,12 +454,17 @@ typedef enum SpvSelectionControlMask_ {
>>>> typedef enum SpvLoopControlShift_ {
>>>> SpvLoopControlUnrollShift = 0,
>>>> SpvLoopControlDontUnrollShift = 1,
>>>> + SpvLoopControlDependencyInfiniteShift = 2,
>>>> + SpvLoopControlDependencyLengthShift = 3,
>>>> + SpvLoopControlMax = 0x7fffffff,
>>>> } SpvLoopControlShift;
>>>>
>>>> typedef enum SpvLoopControlMask_ {
>>>> SpvLoopControlMaskNone = 0,
>>>> SpvLoopControlUnrollMask = 0x00000001,
>>>> SpvLoopControlDontUnrollMask = 0x00000002,
>>>> + SpvLoopControlDependencyInfiniteMask = 0x00000004,
>>>> + SpvLoopControlDependencyLengthMask = 0x00000008,
>>>> } SpvLoopControlMask;
>>>>
>>>> typedef enum SpvFunctionControlShift_ {
>>>> @@ -432,6 +472,7 @@ typedef enum SpvFunctionControlShift_ {
>>>> SpvFunctionControlDontInlineShift = 1,
>>>> SpvFunctionControlPureShift = 2,
>>>> SpvFunctionControlConstShift = 3,
>>>> + SpvFunctionControlMax = 0x7fffffff,
>>>> } SpvFunctionControlShift;
>>>>
>>>> typedef enum SpvFunctionControlMask_ {
>>>> @@ -453,6 +494,7 @@ typedef enum SpvMemorySemanticsShift_ {
>>>> SpvMemorySemanticsCrossWorkgroupMemoryShift = 9,
>>>> SpvMemorySemanticsAtomicCounterMemoryShift = 10,
>>>> SpvMemorySemanticsImageMemoryShift = 11,
>>>> + SpvMemorySemanticsMax = 0x7fffffff,
>>>> } SpvMemorySemanticsShift;
>>>>
>>>> typedef enum SpvMemorySemanticsMask_ {
>>>> @@ -473,6 +515,7 @@ typedef enum SpvMemoryAccessShift_ {
>>>> SpvMemoryAccessVolatileShift = 0,
>>>> SpvMemoryAccessAlignedShift = 1,
>>>> SpvMemoryAccessNontemporalShift = 2,
>>>> + SpvMemoryAccessMax = 0x7fffffff,
>>>> } SpvMemoryAccessShift;
>>>>
>>>> typedef enum SpvMemoryAccessMask_ {
>>>> @@ -488,22 +531,26 @@ typedef enum SpvScope_ {
>>>> SpvScopeWorkgroup = 2,
>>>> SpvScopeSubgroup = 3,
>>>> SpvScopeInvocation = 4,
>>>> + SpvScopeMax = 0x7fffffff,
>>>> } SpvScope;
>>>>
>>>> typedef enum SpvGroupOperation_ {
>>>> SpvGroupOperationReduce = 0,
>>>> SpvGroupOperationInclusiveScan = 1,
>>>> SpvGroupOperationExclusiveScan = 2,
>>>> + SpvGroupOperationMax = 0x7fffffff,
>>>> } SpvGroupOperation;
>>>>
>>>> typedef enum SpvKernelEnqueueFlags_ {
>>>> SpvKernelEnqueueFlagsNoWait = 0,
>>>> SpvKernelEnqueueFlagsWaitKernel = 1,
>>>> SpvKernelEnqueueFlagsWaitWorkGroup = 2,
>>>> + SpvKernelEnqueueFlagsMax = 0x7fffffff,
>>>> } SpvKernelEnqueueFlags;
>>>>
>>>> typedef enum SpvKernelProfilingInfoShift_ {
>>>> SpvKernelProfilingInfoCmdExecTimeShift = 0,
>>>> + SpvKernelProfilingInfoMax = 0x7fffffff,
>>>> } SpvKernelProfilingInfoShift;
>>>>
>>>> typedef enum SpvKernelProfilingInfoMask_ {
>>>> @@ -568,6 +615,12 @@ typedef enum SpvCapability_ {
>>>> SpvCapabilityStorageImageReadWithoutFormat = 55,
>>>> SpvCapabilityStorageImageWriteWithoutFormat = 56,
>>>> SpvCapabilityMultiViewport = 57,
>>>> + SpvCapabilitySubgroupDispatch = 58,
>>>> + SpvCapabilityNamedBarrier = 59,
>>>> + SpvCapabilityPipeStorage = 60,
>>>> + SpvCapabilitySubgroupBallotKHR = 4423,
>>>> + SpvCapabilityDrawParameters = 4427,
>>>> + SpvCapabilityMax = 0x7fffffff,
>>>> } SpvCapability;
>>>>
>>>> typedef enum SpvOp_ {
>>>> @@ -864,6 +917,20 @@ typedef enum SpvOp_ {
>>>> SpvOpNoLine = 317,
>>>> SpvOpAtomicFlagTestAndSet = 318,
>>>> SpvOpAtomicFlagClear = 319,
>>>> + SpvOpImageSparseRead = 320,
>>>> + SpvOpSizeOf = 321,
>>>> + SpvOpTypePipeStorage = 322,
>>>> + SpvOpConstantPipeStorage = 323,
>>>> + SpvOpCreatePipeFromPipeStorage = 324,
>>>> + SpvOpGetKernelLocalSizeForSubgroupCount = 325,
>>>> + SpvOpGetKernelMaxNumSubgroups = 326,
>>>> + SpvOpTypeNamedBarrier = 327,
>>>> + SpvOpNamedBarrierInitialize = 328,
>>>> + SpvOpMemoryNamedBarrier = 329,
>>>> + SpvOpModuleProcessed = 330,
>>>> + SpvOpSubgroupBallotKHR = 4421,
>>>> + SpvOpSubgroupFirstInvocationKHR = 4422,
>>>> + SpvOpMax = 0x7fffffff,
>>>> } SpvOp;
>>>>
>>>> #endif // #ifndef spirv_H
>>>> diff --git a/src/compiler/spirv/spirv_info.c
>>>> b/src/compiler/spirv/spirv_info.c
>>>> index 7a5774c443..1036b41c31 100644
>>>> --- a/src/compiler/spirv/spirv_info.c
>>>> +++ b/src/compiler/spirv/spirv_info.c
>>>> @@ -82,6 +82,11 @@ static const char * const capability_to_string[] = {
>>>> CAPABILITY(StorageImageReadWithoutFormat),
>>>> CAPABILITY(StorageImageWriteWithoutFormat),
>>>> CAPABILITY(MultiViewport),
>>>> + CAPABILITY(SubgroupDispatch),
>>>> + CAPABILITY(NamedBarrier),
>>>> + CAPABILITY(PipeStorage),
>>>> + CAPABILITY(SubgroupBallotKHR),
>>>> + CAPABILITY(DrawParameters),
>>>> };
>>>>
>>>> const char *
>>>> @@ -138,6 +143,7 @@ static const char * const decoration_to_string[] = {
>>>> DECORATION(NoContraction),
>>>> DECORATION(InputAttachmentIndex),
>>>> DECORATION(Alignment),
>>>> + DECORATION(MaxByteOffset),
>>>> };
>>>>
>>>> const char *
>>>> diff --git a/src/compiler/spirv/spirv_to_nir.c
>>>> b/src/compiler/spirv/spirv_to_nir.c
>>>> index 968502c5fd..6f18af2018 100644
>>>> --- a/src/compiler/spirv/spirv_to_nir.c
>>>> +++ b/src/compiler/spirv/spirv_to_nir.c
>>>> @@ -561,6 +561,9 @@ struct_member_decoration_cb(struct vtn_builder *b,
>>>> vtn_warn("Decoration only allowed for CL-style kernels: %s",
>>>> spirv_decoration_to_string(dec->decoration));
>>>> break;
>>>> +
>>>> + default:
>>>> + unreachable("Unhandled decoration");
>>>> }
>>>> }
>>>>
>>>> @@ -638,6 +641,9 @@ type_decoration_cb(struct vtn_builder *b,
>>>> vtn_warn("Decoration only allowed for CL-style kernels: %s",
>>>> spirv_decoration_to_string(dec->decoration));
>>>> break;
>>>> +
>>>> + default:
>>>> + unreachable("Unhandled decoration");
>>>> }
>>>> }
>>>>
>>>> @@ -2653,6 +2659,9 @@ vtn_handle_preamble_instruction(struct vtn_builder
>>>> *b, SpvOp opcode,
>>>> case SpvCapabilityTessellationPointSize:
>>>> spv_check_supported(tessellation, cap);
>>>> break;
>>>> +
>>>> + default:
>>>> + unreachable("Unhandled capability");
>>>> }
>>>> break;
>>>> }
>>>> @@ -2842,6 +2851,9 @@ vtn_handle_execution_mode(struct vtn_builder *b,
>>>> struct vtn_value *entry_point,
>>>> case SpvExecutionModeVecTypeHint:
>>>> case SpvExecutionModeContractionOff:
>>>> break; /* OpenCL */
>>>> +
>>>> + default:
>>>> + unreachable("Unhandled execution mode");
>>>> }
>>>> }
>>>>
>>>> diff --git a/src/compiler/spirv/vtn_variables.c
>>>> b/src/compiler/spirv/vtn_variables.c
>>>> index 4d1ec789cc..05ac91eedd 100644
>>>> --- a/src/compiler/spirv/vtn_variables.c
>>>> +++ b/src/compiler/spirv/vtn_variables.c
>>>> @@ -1139,6 +1139,9 @@ apply_var_decoration(struct vtn_builder *b,
>>>> nir_variable *nir_var,
>>>> vtn_warn("Decoration only allowed for CL-style kernels: %s",
>>>> spirv_decoration_to_string(dec->decoration));
>>>> break;
>>>> +
>>>> + default:
>>>> + unreachable("Unhandled decoration");
>>>> }
>>>> }
>>>>
>>>> --
>>>> 2.11.0
>>>>
>>>> _______________________________________________
>>>> mesa-dev mailing list
>>>> mesa-dev at lists.freedesktop.org
>>>> https://lists.freedesktop.org/mailman/listinfo/mesa-dev
>>> _______________________________________________
>>> mesa-dev mailing list
>>> mesa-dev at lists.freedesktop.org
>>> https://lists.freedesktop.org/mailman/listinfo/mesa-dev
>>
More information about the mesa-dev
mailing list