Add missing count attribute to ExtGetProgramBinarySourceQCOM
authorFraser Waters <frassle@gmail.com>
Thu, 5 Oct 2017 17:28:36 +0000 (18:28 +0100)
committerFraser Waters <frassle@gmail.com>
Thu, 2 Nov 2017 09:28:36 +0000 (09:28 +0000)
Also extends Rewrite to understand the new syntax of "*name".

src/Generator.Bind/Specifications/GL2/overrides.xml
src/Generator.Rewrite/Program.cs
src/OpenTK/Graphics/ES11/ES11.cs
src/OpenTK/Graphics/ES20/ES20.cs
src/OpenTK/Graphics/ES30/ES30.cs
src/OpenTK/Graphics/ES31/ES31.cs

index e3fefd9..b57df4a 100644 (file)
       </param>
     </function>
   </replace>
-</signatures>
+
+  <!-- ExtGetProgramBinarySourceQCOM -->
+  <replace name="gl|glcore|gles1|gles2">
+    <!-- ExtGetProgramBinarySourceQCOM is missing count attributes -->
+    <function name="ExtGetProgramBinarySourceQCOM" extension="QCOM">
+      <param name="source">
+        <count>*length</count>
+      </param>
+    </function>
+  </replace>
+</signatures>
\ No newline at end of file
index 4004002..c662088 100644 (file)
@@ -880,8 +880,8 @@ namespace OpenTK.Rewrite
             var countVariable = new VariableDefinition(TypeInt32);
             body.Variables.Add(countVariable);
 
-            // Parameter will either by a simple name or an
-            // expression like "name*5"
+            // Parameter will either by a simple name, a dereference of a name
+            // like "*name" or an expression like "name*5"
             var parameter = method.Parameters.FirstOrDefault(
                 param => param.Name == countParameter);
             if (parameter != null)
@@ -889,6 +889,14 @@ namespace OpenTK.Rewrite
                 il.Emit(OpCodes.Ldarg, parameter.Index);
                 il.Emit(OpCodes.Stloc, countVariable.Index);
             }
+            else if (countParameter[0] == '*')
+            {
+                var pointerParam = method.Parameters.FirstOrDefault(
+                    param => param.Name == countParameter.Substring(1));
+
+                il.Emit(OpCodes.Ldarg, pointerParam.Index);
+                il.Emit(OpCodes.Ldind_I4);
+            }
             else
             {
                 var operands = countParameter.Split('*');
index 36c8e8f..53dc2a5 100644 (file)
@@ -14542,56 +14542,56 @@ namespace OpenTK.Graphics.ES11
             /// <summary>[requires: QCOM_extended_get2]</summary>
             /// <param name="program"></param>
             /// <param name="shadertype"></param>
-            /// <param name="source"></param>
+            /// <param name="source">[length: *length]</param>
             /// <param name="length"></param>
             [AutoGenerated(Category = "QCOM_extended_get2", Version = "", EntryPoint = "glExtGetProgramBinarySourceQCOM")]
             [CLSCompliant(false)]
-            public static void ExtGetProgramBinarySource(Int32 program, OpenTK.Graphics.ES11.All shadertype, [OutAttribute] out String source, [OutAttribute] Int32[] length) { throw new BindingsNotRewrittenException(); }
+            public static void ExtGetProgramBinarySource(Int32 program, OpenTK.Graphics.ES11.All shadertype, [OutAttribute, CountAttribute(Parameter = "*length")] out String source, [OutAttribute] Int32[] length) { throw new BindingsNotRewrittenException(); }
 
             /// <summary>[requires: QCOM_extended_get2]</summary>
             /// <param name="program"></param>
             /// <param name="shadertype"></param>
-            /// <param name="source"></param>
+            /// <param name="source">[length: *length]</param>
             /// <param name="length"></param>
             [AutoGenerated(Category = "QCOM_extended_get2", Version = "", EntryPoint = "glExtGetProgramBinarySourceQCOM")]
             [CLSCompliant(false)]
-            public static void ExtGetProgramBinarySource(Int32 program, OpenTK.Graphics.ES11.All shadertype, [OutAttribute] out String source, [OutAttribute] out Int32 length) { throw new BindingsNotRewrittenException(); }
+            public static void ExtGetProgramBinarySource(Int32 program, OpenTK.Graphics.ES11.All shadertype, [OutAttribute, CountAttribute(Parameter = "*length")] out String source, [OutAttribute] out Int32 length) { throw new BindingsNotRewrittenException(); }
 
             /// <summary>[requires: QCOM_extended_get2]</summary>
             /// <param name="program"></param>
             /// <param name="shadertype"></param>
-            /// <param name="source"></param>
+            /// <param name="source">[length: *length]</param>
             /// <param name="length"></param>
             [AutoGenerated(Category = "QCOM_extended_get2", Version = "", EntryPoint = "glExtGetProgramBinarySourceQCOM")]
             [CLSCompliant(false)]
-            public static unsafe void ExtGetProgramBinarySource(Int32 program, OpenTK.Graphics.ES11.All shadertype, [OutAttribute] out String source, [OutAttribute] Int32* length) { throw new BindingsNotRewrittenException(); }
+            public static unsafe void ExtGetProgramBinarySource(Int32 program, OpenTK.Graphics.ES11.All shadertype, [OutAttribute, CountAttribute(Parameter = "*length")] out String source, [OutAttribute] Int32* length) { throw new BindingsNotRewrittenException(); }
 
             /// <summary>[requires: QCOM_extended_get2]</summary>
             /// <param name="program"></param>
             /// <param name="shadertype"></param>
-            /// <param name="source"></param>
+            /// <param name="source">[length: *length]</param>
             /// <param name="length"></param>
             [AutoGenerated(Category = "QCOM_extended_get2", Version = "", EntryPoint = "glExtGetProgramBinarySourceQCOM")]
             [CLSCompliant(false)]
-            public static void ExtGetProgramBinarySource(UInt32 program, OpenTK.Graphics.ES11.All shadertype, [OutAttribute] out String source, [OutAttribute] Int32[] length) { throw new BindingsNotRewrittenException(); }
+            public static void ExtGetProgramBinarySource(UInt32 program, OpenTK.Graphics.ES11.All shadertype, [OutAttribute, CountAttribute(Parameter = "*length")] out String source, [OutAttribute] Int32[] length) { throw new BindingsNotRewrittenException(); }
 
             /// <summary>[requires: QCOM_extended_get2]</summary>
             /// <param name="program"></param>
             /// <param name="shadertype"></param>
-            /// <param name="source"></param>
+            /// <param name="source">[length: *length]</param>
             /// <param name="length"></param>
             [AutoGenerated(Category = "QCOM_extended_get2", Version = "", EntryPoint = "glExtGetProgramBinarySourceQCOM")]
             [CLSCompliant(false)]
-            public static void ExtGetProgramBinarySource(UInt32 program, OpenTK.Graphics.ES11.All shadertype, [OutAttribute] out String source, [OutAttribute] out Int32 length) { throw new BindingsNotRewrittenException(); }
+            public static void ExtGetProgramBinarySource(UInt32 program, OpenTK.Graphics.ES11.All shadertype, [OutAttribute, CountAttribute(Parameter = "*length")] out String source, [OutAttribute] out Int32 length) { throw new BindingsNotRewrittenException(); }
 
             /// <summary>[requires: QCOM_extended_get2]</summary>
             /// <param name="program"></param>
             /// <param name="shadertype"></param>
-            /// <param name="source"></param>
+            /// <param name="source">[length: *length]</param>
             /// <param name="length"></param>
             [AutoGenerated(Category = "QCOM_extended_get2", Version = "", EntryPoint = "glExtGetProgramBinarySourceQCOM")]
             [CLSCompliant(false)]
-            public static unsafe void ExtGetProgramBinarySource(UInt32 program, OpenTK.Graphics.ES11.All shadertype, [OutAttribute] out String source, [OutAttribute] Int32* length) { throw new BindingsNotRewrittenException(); }
+            public static unsafe void ExtGetProgramBinarySource(UInt32 program, OpenTK.Graphics.ES11.All shadertype, [OutAttribute, CountAttribute(Parameter = "*length")] out String source, [OutAttribute] Int32* length) { throw new BindingsNotRewrittenException(); }
 
             /// <summary>[requires: QCOM_extended_get2]</summary>
             /// <param name="programs">[length: maxPrograms]</param>
@@ -16240,7 +16240,7 @@ namespace OpenTK.Graphics.ES11
         private static extern unsafe void glExtGetFramebuffersQCOM([OutAttribute, CountAttribute(Parameter = "maxFramebuffers")] UInt32* framebuffers, Int32 maxFramebuffers, [OutAttribute, CountAttribute(Count = 1)] Int32* numFramebuffers);
         [Slot(96)]
         [DllImport(Library, ExactSpelling = true, CallingConvention = CallingConvention.Winapi)]
-        private static extern unsafe void glExtGetProgramBinarySourceQCOM(UInt32 program, System.Int32 shadertype, [OutAttribute] IntPtr source, [OutAttribute] Int32* length);
+        private static extern unsafe void glExtGetProgramBinarySourceQCOM(UInt32 program, System.Int32 shadertype, [OutAttribute, CountAttribute(Parameter = "*length")] IntPtr source, [OutAttribute] Int32* length);
         [Slot(97)]
         [DllImport(Library, ExactSpelling = true, CallingConvention = CallingConvention.Winapi)]
         private static extern unsafe void glExtGetProgramsQCOM([OutAttribute, CountAttribute(Parameter = "maxPrograms")] UInt32* programs, Int32 maxPrograms, [OutAttribute, CountAttribute(Count = 1)] Int32* numPrograms);
index 2cbceee..84a9438 100644 (file)
@@ -52846,56 +52846,56 @@ namespace OpenTK.Graphics.ES20
             /// <summary>[requires: QCOM_extended_get2]</summary>
             /// <param name="program"></param>
             /// <param name="shadertype"></param>
-            /// <param name="source"></param>
+            /// <param name="source">[length: *length]</param>
             /// <param name="length"></param>
             [AutoGenerated(Category = "QCOM_extended_get2", Version = "", EntryPoint = "glExtGetProgramBinarySourceQCOM")]
             [CLSCompliant(false)]
-            public static void ExtGetProgramBinarySource(Int32 program, OpenTK.Graphics.ES20.All shadertype, [OutAttribute] out String source, [OutAttribute] Int32[] length) { throw new BindingsNotRewrittenException(); }
+            public static void ExtGetProgramBinarySource(Int32 program, OpenTK.Graphics.ES20.All shadertype, [OutAttribute, CountAttribute(Parameter = "*length")] out String source, [OutAttribute] Int32[] length) { throw new BindingsNotRewrittenException(); }
 
             /// <summary>[requires: QCOM_extended_get2]</summary>
             /// <param name="program"></param>
             /// <param name="shadertype"></param>
-            /// <param name="source"></param>
+            /// <param name="source">[length: *length]</param>
             /// <param name="length"></param>
             [AutoGenerated(Category = "QCOM_extended_get2", Version = "", EntryPoint = "glExtGetProgramBinarySourceQCOM")]
             [CLSCompliant(false)]
-            public static void ExtGetProgramBinarySource(Int32 program, OpenTK.Graphics.ES20.All shadertype, [OutAttribute] out String source, [OutAttribute] out Int32 length) { throw new BindingsNotRewrittenException(); }
+            public static void ExtGetProgramBinarySource(Int32 program, OpenTK.Graphics.ES20.All shadertype, [OutAttribute, CountAttribute(Parameter = "*length")] out String source, [OutAttribute] out Int32 length) { throw new BindingsNotRewrittenException(); }
 
             /// <summary>[requires: QCOM_extended_get2]</summary>
             /// <param name="program"></param>
             /// <param name="shadertype"></param>
-            /// <param name="source"></param>
+            /// <param name="source">[length: *length]</param>
             /// <param name="length"></param>
             [AutoGenerated(Category = "QCOM_extended_get2", Version = "", EntryPoint = "glExtGetProgramBinarySourceQCOM")]
             [CLSCompliant(false)]
-            public static unsafe void ExtGetProgramBinarySource(Int32 program, OpenTK.Graphics.ES20.All shadertype, [OutAttribute] out String source, [OutAttribute] Int32* length) { throw new BindingsNotRewrittenException(); }
+            public static unsafe void ExtGetProgramBinarySource(Int32 program, OpenTK.Graphics.ES20.All shadertype, [OutAttribute, CountAttribute(Parameter = "*length")] out String source, [OutAttribute] Int32* length) { throw new BindingsNotRewrittenException(); }
 
             /// <summary>[requires: QCOM_extended_get2]</summary>
             /// <param name="program"></param>
             /// <param name="shadertype"></param>
-            /// <param name="source"></param>
+            /// <param name="source">[length: *length]</param>
             /// <param name="length"></param>
             [AutoGenerated(Category = "QCOM_extended_get2", Version = "", EntryPoint = "glExtGetProgramBinarySourceQCOM")]
             [CLSCompliant(false)]
-            public static void ExtGetProgramBinarySource(UInt32 program, OpenTK.Graphics.ES20.All shadertype, [OutAttribute] out String source, [OutAttribute] Int32[] length) { throw new BindingsNotRewrittenException(); }
+            public static void ExtGetProgramBinarySource(UInt32 program, OpenTK.Graphics.ES20.All shadertype, [OutAttribute, CountAttribute(Parameter = "*length")] out String source, [OutAttribute] Int32[] length) { throw new BindingsNotRewrittenException(); }
 
             /// <summary>[requires: QCOM_extended_get2]</summary>
             /// <param name="program"></param>
             /// <param name="shadertype"></param>
-            /// <param name="source"></param>
+            /// <param name="source">[length: *length]</param>
             /// <param name="length"></param>
             [AutoGenerated(Category = "QCOM_extended_get2", Version = "", EntryPoint = "glExtGetProgramBinarySourceQCOM")]
             [CLSCompliant(false)]
-            public static void ExtGetProgramBinarySource(UInt32 program, OpenTK.Graphics.ES20.All shadertype, [OutAttribute] out String source, [OutAttribute] out Int32 length) { throw new BindingsNotRewrittenException(); }
+            public static void ExtGetProgramBinarySource(UInt32 program, OpenTK.Graphics.ES20.All shadertype, [OutAttribute, CountAttribute(Parameter = "*length")] out String source, [OutAttribute] out Int32 length) { throw new BindingsNotRewrittenException(); }
 
             /// <summary>[requires: QCOM_extended_get2]</summary>
             /// <param name="program"></param>
             /// <param name="shadertype"></param>
-            /// <param name="source"></param>
+            /// <param name="source">[length: *length]</param>
             /// <param name="length"></param>
             [AutoGenerated(Category = "QCOM_extended_get2", Version = "", EntryPoint = "glExtGetProgramBinarySourceQCOM")]
             [CLSCompliant(false)]
-            public static unsafe void ExtGetProgramBinarySource(UInt32 program, OpenTK.Graphics.ES20.All shadertype, [OutAttribute] out String source, [OutAttribute] Int32* length) { throw new BindingsNotRewrittenException(); }
+            public static unsafe void ExtGetProgramBinarySource(UInt32 program, OpenTK.Graphics.ES20.All shadertype, [OutAttribute, CountAttribute(Parameter = "*length")] out String source, [OutAttribute] Int32* length) { throw new BindingsNotRewrittenException(); }
 
             /// <summary>[requires: QCOM_extended_get2]</summary>
             /// <param name="programs">[length: maxPrograms]</param>
@@ -55376,7 +55376,7 @@ namespace OpenTK.Graphics.ES20
         private static extern unsafe void glExtGetFramebuffersQCOM([OutAttribute, CountAttribute(Parameter = "maxFramebuffers")] UInt32* framebuffers, Int32 maxFramebuffers, [OutAttribute, CountAttribute(Count = 1)] Int32* numFramebuffers);
         [Slot(161)]
         [DllImport(Library, ExactSpelling = true, CallingConvention = CallingConvention.Winapi)]
-        private static extern unsafe void glExtGetProgramBinarySourceQCOM(UInt32 program, System.Int32 shadertype, [OutAttribute] IntPtr source, [OutAttribute] Int32* length);
+        private static extern unsafe void glExtGetProgramBinarySourceQCOM(UInt32 program, System.Int32 shadertype, [OutAttribute, CountAttribute(Parameter = "*length")] IntPtr source, [OutAttribute] Int32* length);
         [Slot(162)]
         [DllImport(Library, ExactSpelling = true, CallingConvention = CallingConvention.Winapi)]
         private static extern unsafe void glExtGetProgramsQCOM([OutAttribute, CountAttribute(Parameter = "maxPrograms")] UInt32* programs, Int32 maxPrograms, [OutAttribute, CountAttribute(Count = 1)] Int32* numPrograms);
index f28d51b..74f0545 100644 (file)
@@ -60859,56 +60859,56 @@ namespace OpenTK.Graphics.ES30
             /// <summary>[requires: QCOM_extended_get2]</summary>
             /// <param name="program"></param>
             /// <param name="shadertype"></param>
-            /// <param name="source"></param>
+            /// <param name="source">[length: *length]</param>
             /// <param name="length"></param>
             [AutoGenerated(Category = "QCOM_extended_get2", Version = "", EntryPoint = "glExtGetProgramBinarySourceQCOM")]
             [CLSCompliant(false)]
-            public static void ExtGetProgramBinarySource(Int32 program, OpenTK.Graphics.ES30.All shadertype, [OutAttribute] out String source, [OutAttribute] Int32[] length) { throw new BindingsNotRewrittenException(); }
+            public static void ExtGetProgramBinarySource(Int32 program, OpenTK.Graphics.ES30.All shadertype, [OutAttribute, CountAttribute(Parameter = "*length")] out String source, [OutAttribute] Int32[] length) { throw new BindingsNotRewrittenException(); }
 
             /// <summary>[requires: QCOM_extended_get2]</summary>
             /// <param name="program"></param>
             /// <param name="shadertype"></param>
-            /// <param name="source"></param>
+            /// <param name="source">[length: *length]</param>
             /// <param name="length"></param>
             [AutoGenerated(Category = "QCOM_extended_get2", Version = "", EntryPoint = "glExtGetProgramBinarySourceQCOM")]
             [CLSCompliant(false)]
-            public static void ExtGetProgramBinarySource(Int32 program, OpenTK.Graphics.ES30.All shadertype, [OutAttribute] out String source, [OutAttribute] out Int32 length) { throw new BindingsNotRewrittenException(); }
+            public static void ExtGetProgramBinarySource(Int32 program, OpenTK.Graphics.ES30.All shadertype, [OutAttribute, CountAttribute(Parameter = "*length")] out String source, [OutAttribute] out Int32 length) { throw new BindingsNotRewrittenException(); }
 
             /// <summary>[requires: QCOM_extended_get2]</summary>
             /// <param name="program"></param>
             /// <param name="shadertype"></param>
-            /// <param name="source"></param>
+            /// <param name="source">[length: *length]</param>
             /// <param name="length"></param>
             [AutoGenerated(Category = "QCOM_extended_get2", Version = "", EntryPoint = "glExtGetProgramBinarySourceQCOM")]
             [CLSCompliant(false)]
-            public static unsafe void ExtGetProgramBinarySource(Int32 program, OpenTK.Graphics.ES30.All shadertype, [OutAttribute] out String source, [OutAttribute] Int32* length) { throw new BindingsNotRewrittenException(); }
+            public static unsafe void ExtGetProgramBinarySource(Int32 program, OpenTK.Graphics.ES30.All shadertype, [OutAttribute, CountAttribute(Parameter = "*length")] out String source, [OutAttribute] Int32* length) { throw new BindingsNotRewrittenException(); }
 
             /// <summary>[requires: QCOM_extended_get2]</summary>
             /// <param name="program"></param>
             /// <param name="shadertype"></param>
-            /// <param name="source"></param>
+            /// <param name="source">[length: *length]</param>
             /// <param name="length"></param>
             [AutoGenerated(Category = "QCOM_extended_get2", Version = "", EntryPoint = "glExtGetProgramBinarySourceQCOM")]
             [CLSCompliant(false)]
-            public static void ExtGetProgramBinarySource(UInt32 program, OpenTK.Graphics.ES30.All shadertype, [OutAttribute] out String source, [OutAttribute] Int32[] length) { throw new BindingsNotRewrittenException(); }
+            public static void ExtGetProgramBinarySource(UInt32 program, OpenTK.Graphics.ES30.All shadertype, [OutAttribute, CountAttribute(Parameter = "*length")] out String source, [OutAttribute] Int32[] length) { throw new BindingsNotRewrittenException(); }
 
             /// <summary>[requires: QCOM_extended_get2]</summary>
             /// <param name="program"></param>
             /// <param name="shadertype"></param>
-            /// <param name="source"></param>
+            /// <param name="source">[length: *length]</param>
             /// <param name="length"></param>
             [AutoGenerated(Category = "QCOM_extended_get2", Version = "", EntryPoint = "glExtGetProgramBinarySourceQCOM")]
             [CLSCompliant(false)]
-            public static void ExtGetProgramBinarySource(UInt32 program, OpenTK.Graphics.ES30.All shadertype, [OutAttribute] out String source, [OutAttribute] out Int32 length) { throw new BindingsNotRewrittenException(); }
+            public static void ExtGetProgramBinarySource(UInt32 program, OpenTK.Graphics.ES30.All shadertype, [OutAttribute, CountAttribute(Parameter = "*length")] out String source, [OutAttribute] out Int32 length) { throw new BindingsNotRewrittenException(); }
 
             /// <summary>[requires: QCOM_extended_get2]</summary>
             /// <param name="program"></param>
             /// <param name="shadertype"></param>
-            /// <param name="source"></param>
+            /// <param name="source">[length: *length]</param>
             /// <param name="length"></param>
             [AutoGenerated(Category = "QCOM_extended_get2", Version = "", EntryPoint = "glExtGetProgramBinarySourceQCOM")]
             [CLSCompliant(false)]
-            public static unsafe void ExtGetProgramBinarySource(UInt32 program, OpenTK.Graphics.ES30.All shadertype, [OutAttribute] out String source, [OutAttribute] Int32* length) { throw new BindingsNotRewrittenException(); }
+            public static unsafe void ExtGetProgramBinarySource(UInt32 program, OpenTK.Graphics.ES30.All shadertype, [OutAttribute, CountAttribute(Parameter = "*length")] out String source, [OutAttribute] Int32* length) { throw new BindingsNotRewrittenException(); }
 
             /// <summary>[requires: QCOM_extended_get2]</summary>
             /// <param name="programs">[length: maxPrograms]</param>
@@ -63701,7 +63701,7 @@ namespace OpenTK.Graphics.ES30
         private static extern unsafe void glExtGetFramebuffersQCOM([OutAttribute, CountAttribute(Parameter = "maxFramebuffers")] UInt32* framebuffers, Int32 maxFramebuffers, [OutAttribute, CountAttribute(Count = 1)] Int32* numFramebuffers);
         [Slot(189)]
         [DllImport(Library, ExactSpelling = true, CallingConvention = CallingConvention.Winapi)]
-        private static extern unsafe void glExtGetProgramBinarySourceQCOM(UInt32 program, System.Int32 shadertype, [OutAttribute] IntPtr source, [OutAttribute] Int32* length);
+        private static extern unsafe void glExtGetProgramBinarySourceQCOM(UInt32 program, System.Int32 shadertype, [OutAttribute, CountAttribute(Parameter = "*length")] IntPtr source, [OutAttribute] Int32* length);
         [Slot(190)]
         [DllImport(Library, ExactSpelling = true, CallingConvention = CallingConvention.Winapi)]
         private static extern unsafe void glExtGetProgramsQCOM([OutAttribute, CountAttribute(Parameter = "maxPrograms")] UInt32* programs, Int32 maxPrograms, [OutAttribute, CountAttribute(Count = 1)] Int32* numPrograms);
index ec69e03..c0eb400 100644 (file)
@@ -57844,56 +57844,56 @@ namespace OpenTK.Graphics.ES31
             /// <summary>[requires: QCOM_extended_get2]</summary>
             /// <param name="program"></param>
             /// <param name="shadertype"></param>
-            /// <param name="source"></param>
+            /// <param name="source">[length: *length]</param>
             /// <param name="length"></param>
             [AutoGenerated(Category = "QCOM_extended_get2", Version = "", EntryPoint = "glExtGetProgramBinarySourceQCOM")]
             [CLSCompliant(false)]
-            public static void ExtGetProgramBinarySource(Int32 program, OpenTK.Graphics.ES31.All shadertype, [OutAttribute] out String source, [OutAttribute] Int32[] length) { throw new BindingsNotRewrittenException(); }
+            public static void ExtGetProgramBinarySource(Int32 program, OpenTK.Graphics.ES31.All shadertype, [OutAttribute, CountAttribute(Parameter = "*length")] out String source, [OutAttribute] Int32[] length) { throw new BindingsNotRewrittenException(); }
 
             /// <summary>[requires: QCOM_extended_get2]</summary>
             /// <param name="program"></param>
             /// <param name="shadertype"></param>
-            /// <param name="source"></param>
+            /// <param name="source">[length: *length]</param>
             /// <param name="length"></param>
             [AutoGenerated(Category = "QCOM_extended_get2", Version = "", EntryPoint = "glExtGetProgramBinarySourceQCOM")]
             [CLSCompliant(false)]
-            public static void ExtGetProgramBinarySource(Int32 program, OpenTK.Graphics.ES31.All shadertype, [OutAttribute] out String source, [OutAttribute] out Int32 length) { throw new BindingsNotRewrittenException(); }
+            public static void ExtGetProgramBinarySource(Int32 program, OpenTK.Graphics.ES31.All shadertype, [OutAttribute, CountAttribute(Parameter = "*length")] out String source, [OutAttribute] out Int32 length) { throw new BindingsNotRewrittenException(); }
 
             /// <summary>[requires: QCOM_extended_get2]</summary>
             /// <param name="program"></param>
             /// <param name="shadertype"></param>
-            /// <param name="source"></param>
+            /// <param name="source">[length: *length]</param>
             /// <param name="length"></param>
             [AutoGenerated(Category = "QCOM_extended_get2", Version = "", EntryPoint = "glExtGetProgramBinarySourceQCOM")]
             [CLSCompliant(false)]
-            public static unsafe void ExtGetProgramBinarySource(Int32 program, OpenTK.Graphics.ES31.All shadertype, [OutAttribute] out String source, [OutAttribute] Int32* length) { throw new BindingsNotRewrittenException(); }
+            public static unsafe void ExtGetProgramBinarySource(Int32 program, OpenTK.Graphics.ES31.All shadertype, [OutAttribute, CountAttribute(Parameter = "*length")] out String source, [OutAttribute] Int32* length) { throw new BindingsNotRewrittenException(); }
 
             /// <summary>[requires: QCOM_extended_get2]</summary>
             /// <param name="program"></param>
             /// <param name="shadertype"></param>
-            /// <param name="source"></param>
+            /// <param name="source">[length: *length]</param>
             /// <param name="length"></param>
             [AutoGenerated(Category = "QCOM_extended_get2", Version = "", EntryPoint = "glExtGetProgramBinarySourceQCOM")]
             [CLSCompliant(false)]
-            public static void ExtGetProgramBinarySource(UInt32 program, OpenTK.Graphics.ES31.All shadertype, [OutAttribute] out String source, [OutAttribute] Int32[] length) { throw new BindingsNotRewrittenException(); }
+            public static void ExtGetProgramBinarySource(UInt32 program, OpenTK.Graphics.ES31.All shadertype, [OutAttribute, CountAttribute(Parameter = "*length")] out String source, [OutAttribute] Int32[] length) { throw new BindingsNotRewrittenException(); }
 
             /// <summary>[requires: QCOM_extended_get2]</summary>
             /// <param name="program"></param>
             /// <param name="shadertype"></param>
-            /// <param name="source"></param>
+            /// <param name="source">[length: *length]</param>
             /// <param name="length"></param>
             [AutoGenerated(Category = "QCOM_extended_get2", Version = "", EntryPoint = "glExtGetProgramBinarySourceQCOM")]
             [CLSCompliant(false)]
-            public static void ExtGetProgramBinarySource(UInt32 program, OpenTK.Graphics.ES31.All shadertype, [OutAttribute] out String source, [OutAttribute] out Int32 length) { throw new BindingsNotRewrittenException(); }
+            public static void ExtGetProgramBinarySource(UInt32 program, OpenTK.Graphics.ES31.All shadertype, [OutAttribute, CountAttribute(Parameter = "*length")] out String source, [OutAttribute] out Int32 length) { throw new BindingsNotRewrittenException(); }
 
             /// <summary>[requires: QCOM_extended_get2]</summary>
             /// <param name="program"></param>
             /// <param name="shadertype"></param>
-            /// <param name="source"></param>
+            /// <param name="source">[length: *length]</param>
             /// <param name="length"></param>
             [AutoGenerated(Category = "QCOM_extended_get2", Version = "", EntryPoint = "glExtGetProgramBinarySourceQCOM")]
             [CLSCompliant(false)]
-            public static unsafe void ExtGetProgramBinarySource(UInt32 program, OpenTK.Graphics.ES31.All shadertype, [OutAttribute] out String source, [OutAttribute] Int32* length) { throw new BindingsNotRewrittenException(); }
+            public static unsafe void ExtGetProgramBinarySource(UInt32 program, OpenTK.Graphics.ES31.All shadertype, [OutAttribute, CountAttribute(Parameter = "*length")] out String source, [OutAttribute] Int32* length) { throw new BindingsNotRewrittenException(); }
 
             /// <summary>[requires: QCOM_extended_get2]</summary>
             /// <param name="programs">[length: maxPrograms]</param>
@@ -60890,7 +60890,7 @@ namespace OpenTK.Graphics.ES31
         private static extern unsafe void glExtGetFramebuffersQCOM([OutAttribute, CountAttribute(Parameter = "maxFramebuffers")] UInt32* framebuffers, Int32 maxFramebuffers, [OutAttribute, CountAttribute(Count = 1)] Int32* numFramebuffers);
         [Slot(199)]
         [DllImport(Library, ExactSpelling = true, CallingConvention = CallingConvention.Winapi)]
-        private static extern unsafe void glExtGetProgramBinarySourceQCOM(UInt32 program, System.Int32 shadertype, [OutAttribute] IntPtr source, [OutAttribute] Int32* length);
+        private static extern unsafe void glExtGetProgramBinarySourceQCOM(UInt32 program, System.Int32 shadertype, [OutAttribute, CountAttribute(Parameter = "*length")] IntPtr source, [OutAttribute] Int32* length);
         [Slot(200)]
         [DllImport(Library, ExactSpelling = true, CallingConvention = CallingConvention.Winapi)]
         private static extern unsafe void glExtGetProgramsQCOM([OutAttribute, CountAttribute(Parameter = "maxPrograms")] UInt32* programs, Int32 maxPrograms, [OutAttribute, CountAttribute(Count = 1)] Int32* numPrograms);