aboutsummaryrefslogtreecommitdiffstatsci
diff options
context:
space:
mode:
authorJean-Philippe Bruyère <jp_bruyere@hotmail.com>2020-01-27 09:28:13 +0100
committerJean-Philippe Bruyère <jp_bruyere@hotmail.com>2020-01-27 09:28:13 +0100
commit378953ccf73d6756d0ce64305b55da974d8f47d0 (patch)
tree5d7fbad8abe1a7bd429f8885486d762f3279dca6
parent0a17e8317ce1e116670514b99f8ebe770afbc3e8 (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.cs36
-rw-r--r--VK/vulkan.csproj4
-rw-r--r--appveyor.yml4
-rw-r--r--vk.generator/Program.cs21
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);