diff options
| author | Jean-Philippe Bruyère <jp_bruyere@hotmail.com> | 2020-01-27 09:28:13 +0100 |
|---|---|---|
| committer | Jean-Philippe Bruyère <jp_bruyere@hotmail.com> | 2020-01-27 09:28:13 +0100 |
| commit | b8c1860a4b3e56d52bbc15afdf964b701682c95f (patch) | |
| tree | 5d7fbad8abe1a7bd429f8885486d762f3279dca6 | |
| parent | dcf8424c745a27a4d16618c54f656f284800555e (diff) | |
use int/uint to store enum values in structs to be able to blit them with ms .net, and add a public property for fetching them with conversion
| -rw-r--r-- | VK/Structs.cs | 36 | ||||
| -rw-r--r-- | VK/vulkan.csproj | 4 | ||||
| -rw-r--r-- | appveyor.yml | 4 | ||||
| -rw-r--r-- | vk.generator/Program.cs | 21 |
4 files changed, 39 insertions, 26 deletions
diff --git a/VK/Structs.cs b/VK/Structs.cs index 452555e..71dd5b4 100644 --- a/VK/Structs.cs +++ b/VK/Structs.cs @@ -79,7 +79,7 @@ namespace Vulkan { public partial struct VkDescriptorSetLayoutBinding { public VkDescriptorSetLayoutBinding (uint _binding, VkShaderStageFlags _stageFlags, VkDescriptorType _descriptorType, uint _descriptorCount = 1) { binding = _binding; - descriptorType = _descriptorType; + this._descriptorType = (int)_descriptorType; descriptorCount = _descriptorCount; stageFlags = _stageFlags; pImmutableSamplers = (IntPtr)0; @@ -87,7 +87,7 @@ namespace Vulkan { } public partial struct VkDescriptorSetLayoutCreateInfo { public VkDescriptorSetLayoutCreateInfo (VkDescriptorSetLayoutCreateFlags flags, uint bindingCount, IntPtr pBindings) { - sType = VkStructureType.DescriptorSetLayoutCreateInfo; + this._sType = (int)VkStructureType.DescriptorSetLayoutCreateInfo; pNext = IntPtr.Zero; this.flags = flags; this.bindingCount = bindingCount; @@ -98,7 +98,7 @@ namespace Vulkan { public VkVertexInputBindingDescription (uint _binding, uint _stride, VkVertexInputRate _inputRate = VkVertexInputRate.Vertex) { binding = _binding; stride = _stride; - inputRate = _inputRate; + this._inputRate = (int)_inputRate; } } @@ -106,13 +106,13 @@ namespace Vulkan { public VkVertexInputAttributeDescription (uint _binding, uint _location, VkFormat _format, uint _offset = 0) { location = _location; binding = _binding; - format = _format; + this._format = (int)_format; offset = _offset; } public VkVertexInputAttributeDescription (uint _location, VkFormat _format, uint _offset = 0) { location = _location; binding = 0; - format = _format; + this._format = (int)_format; offset = _offset; } } @@ -126,12 +126,12 @@ namespace Vulkan { VkBlendOp alphaBlendOp = VkBlendOp.Add, VkColorComponentFlags colorWriteMask = VkColorComponentFlags.R | VkColorComponentFlags.G | VkColorComponentFlags.B | VkColorComponentFlags.A) { this.blendEnable = blendEnable; - this.srcColorBlendFactor = srcColorBlendFactor; - this.dstColorBlendFactor = dstColorBlendFactor; - this.colorBlendOp = colorBlendOp; - this.srcAlphaBlendFactor = srcAlphaBlendFactor; - this.dstAlphaBlendFactor = dstAlphaBlendFactor; - this.alphaBlendOp = alphaBlendOp; + this._srcColorBlendFactor = (int)srcColorBlendFactor; + this._dstColorBlendFactor = (int)dstColorBlendFactor; + this._colorBlendOp = (int)colorBlendOp; + this._srcAlphaBlendFactor = (int)srcAlphaBlendFactor; + this._dstAlphaBlendFactor = (int)dstAlphaBlendFactor; + this._alphaBlendOp = (int)alphaBlendOp; this.colorWriteMask = colorWriteMask; } } @@ -144,7 +144,7 @@ namespace Vulkan { } public partial struct VkCommandBufferBeginInfo { public VkCommandBufferBeginInfo (VkCommandBufferUsageFlags usage = (VkCommandBufferUsageFlags)0) { - sType = VkStructureType.CommandBufferBeginInfo; + this._sType = (int)VkStructureType.CommandBufferBeginInfo; pNext = pInheritanceInfo = IntPtr.Zero; flags = usage; } @@ -162,9 +162,9 @@ namespace Vulkan { } public partial struct VkDebugMarkerObjectNameInfoEXT { public VkDebugMarkerObjectNameInfoEXT (VkDebugReportObjectTypeEXT objectType, ulong handle) { - sType = VkStructureType.DebugMarkerObjectNameInfoEXT; + this._sType = (int)VkStructureType.DebugMarkerObjectNameInfoEXT; pNext = IntPtr.Zero; - this.objectType = objectType; + this._objectType = (int)objectType; _object = handle; pObjectName = IntPtr.Zero; } @@ -172,23 +172,23 @@ namespace Vulkan { public partial struct VkDebugUtilsObjectNameInfoEXT { public VkDebugUtilsObjectNameInfoEXT(VkObjectType objectType, ulong handle) { - sType = VkStructureType.DebugUtilsObjectNameInfoEXT; + this._sType = (int)VkStructureType.DebugUtilsObjectNameInfoEXT; pNext = IntPtr.Zero; - this.objectType = objectType; + this._objectType = (int)objectType; objectHandle = handle; pObjectName = IntPtr.Zero; } } public partial struct VkDescriptorPoolSize { public VkDescriptorPoolSize (VkDescriptorType descriptorType, uint count = 1) { - type = descriptorType; + this._type = (int)descriptorType; descriptorCount = count; } } public unsafe partial struct VkAttachmentReference { public VkAttachmentReference (uint attachment, VkImageLayout layout) { this.attachment = attachment; - this.layout = layout; + this._layout = (int)layout; } } } diff --git a/VK/vulkan.csproj b/VK/vulkan.csproj index 9341422..34a0c23 100644 --- a/VK/vulkan.csproj +++ b/VK/vulkan.csproj @@ -3,7 +3,7 @@ <PropertyGroup> <TargetFrameworks>netstandard2.0</TargetFrameworks> - <AssemblyVersion>0.2.0</AssemblyVersion> + <AssemblyVersion>0.2.1</AssemblyVersion> <AssemblyName>VK</AssemblyName> <Description>Low level vulkan bindings for .net</Description> <Product>VK</Product> @@ -60,4 +60,4 @@ </Exec> </Target> -</Project>
\ No newline at end of file +</Project> diff --git a/appveyor.yml b/appveyor.yml index 1543cd4..08034e5 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -4,7 +4,6 @@ image: - Visual Studio 2019 - Ubuntu - build: verbosity: minimal @@ -35,8 +34,7 @@ for: - wget -qO - http://packages.lunarg.com/lunarg-signing-key-pub.asc | sudo apt-key add - - sudo wget -qO /etc/apt/sources.list.d/lunarg-vulkan-bionic.list https://packages.lunarg.com/vulkan/lunarg-vulkan-bionic.list - sudo apt -qq update - - sudo apt -y install vulkan-sdk - - glslc --version + - sudo apt -y install vulkan-sdk build_script: - dotnet build /p:Configuration=Release diff --git a/vk.generator/Program.cs b/vk.generator/Program.cs index 94edb4a..04819fd 100644 --- a/vk.generator/Program.cs +++ b/vk.generator/Program.cs @@ -400,9 +400,24 @@ namespace vk.generator { tw.WriteLine ($"/// <summary> {mb.comment} </summary>"); string typeStr; + + EnumDef ed = enums.FirstOrDefault (e => e.Name == mb.typedef.Name); + if (mb.typedef.IndirectionLevel > 0 || mb.typedef.Name.StartsWith ("PFN_", StringComparison.Ordinal)) typeStr = "IntPtr"; - else + else if (ed != null) { + //enums has to be stored in struct as int or uint for enums are not yet blittable in ms .NET + typeStr = ed.type == EnumTypes.@enum ? "int" : "uint"; + tw.WriteLine ($"{typeStr} _{mb.Name};"); + tw.WriteLine ($"public {mb.typedef.CSName} {mb.Name} {{"); + tw.Indent++; + tw.WriteLine ($"get => ({mb.typedef.CSName})_{mb.Name};"); + tw.WriteLine ($"set {{ _{mb.Name} = ({typeStr})value; }}"); + tw.Indent--; + tw.WriteLine (@"}"); + + continue; + } else typeStr = mb.typedef.CSName; if (sd.category == TypeCategories.union) @@ -1130,8 +1145,8 @@ namespace vk.generator { } else if (f.Name == "remove") { Console.ForegroundColor = ConsoleColor.DarkBlue; Console.WriteLine ($"feature remove: {f.OuterXml}"); - } else - Debugger.Break (); + }// else + //Debugger.Break (); } features.Add (fd); |