futhark icon indicating copy to clipboard operation
futhark copied to clipboard

`static const` variables in headers do not get their values assigned on the Nim generated code

Open heysokam opened this issue 10 months ago • 4 comments

typedef WGPUFlags WGPUTextureUsage;
static const WGPUTextureUsage WGPUTextureUsage_None = 0x0000000000000000;
static const WGPUTextureUsage WGPUTextureUsage_CopySrc = 0x0000000000000001;
static const WGPUTextureUsage WGPUTextureUsage_CopyDst = 0x0000000000000002;
static const WGPUTextureUsage WGPUTextureUsage_TextureBinding = 0x0000000000000004;
static const WGPUTextureUsage WGPUTextureUsage_StorageBinding = 0x0000000000000008;
static const WGPUTextureUsage WGPUTextureUsage_RenderAttachment = 0x0000000000000010;
var TextureUsage_None*: TextureUsage
var TextureUsage_CopySrc*: TextureUsage
var TextureUsage_CopyDst*: TextureUsage
var TextureUsage_TextureBinding*: TextureUsage
var TextureUsage_StorageBinding*: TextureUsage
var TextureUsage_RenderAttachment*: TextureUsage

Source: https://github.com/webgpu-native/webgpu-headers/blob/bac520839ff5ed2e2b648ed540bd9ec45edbccbc/webgpu.h#L1140-L1178 Generated output: https://github.com/heysokam/wgpu/blob/14e586d7b67188797c7ffcde9b84077ec8393017/src/wgpu/api.nim#L1639-L1668

heysokam avatar Apr 20 '25 10:04 heysokam

I'm sure this used to work.. Which libclang version do you have installed? I know there has been some differences between the versions around this, so it might help me to debug this.

PMunch avatar May 10 '25 08:05 PMunch

clang 19

heysokam avatar May 10 '25 08:05 heysokam

This is also affecting Vulkan (using the Volk wrapper) and clang 20 :

// Flag bits for VkPipelineStageFlagBits2
typedef VkFlags64 VkPipelineStageFlagBits2;
static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_NONE = 0ULL;
static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_TOP_OF_PIPE_BIT = 0x00000001ULL;
static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT = 0x00000002ULL;
static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_VERTEX_INPUT_BIT = 0x00000004ULL;
static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_VERTEX_SHADER_BIT = 0x00000008ULL;
static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT = 0x00000010ULL;
static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT = 0x00000020ULL;
static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT = 0x00000040ULL;
static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT = 0x00000080ULL;
var VK_PIPELINE_STAGE_2_NONE*: VkPipelineStageFlagBits2
var VK_PIPELINE_STAGE_2_TOP_OF_PIPE_BIT*: VkPipelineStageFlagBits2
var VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT*: VkPipelineStageFlagBits2
var VK_PIPELINE_STAGE_2_VERTEX_INPUT_BIT*: VkPipelineStageFlagBits2
var VK_PIPELINE_STAGE_2_VERTEX_SHADER_BIT*: VkPipelineStageFlagBits2
var VK_PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT*: VkPipelineStageFlagBits2
var VK_PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT*: VkPipelineStageFlagBits2
var VK_PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT*: VkPipelineStageFlagBits2
var VK_PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT*: VkPipelineStageFlagBits2

tokyovigilante avatar Jul 03 '25 01:07 tokyovigilante

See https://github.com/PMunch/futhark/pull/158

gokr avatar Nov 10 '25 20:11 gokr