From 02e510a5f938a670d6cf8cb45c43e52586f31458 Mon Sep 17 00:00:00 2001 From: William Candillon Date: Thu, 11 Sep 2025 19:11:33 +0200 Subject: [PATCH 1/3] :wrench: --- packages/webgpu/cpp/jsi/RNFHybridObject.h | 10 +- packages/webgpu/cpp/jsi/RNFJSIConverter.h | 1 - packages/webgpu/cpp/rnwgpu/api/Convertors.h | 1 + packages/webgpu/cpp/rnwgpu/api/GPUError.h | 2 +- .../cpp/rnwgpu/api/GPURenderPassEncoder.cpp | 2 +- .../cpp/rnwgpu/api/descriptors/Unions.h | 128 +++++++++--------- 6 files changed, 76 insertions(+), 68 deletions(-) diff --git a/packages/webgpu/cpp/jsi/RNFHybridObject.h b/packages/webgpu/cpp/jsi/RNFHybridObject.h index 0a644b7aa..3ed3eb25e 100644 --- a/packages/webgpu/cpp/jsi/RNFHybridObject.h +++ b/packages/webgpu/cpp/jsi/RNFHybridObject.h @@ -4,7 +4,6 @@ #pragma once -#include "RNFJSIConverter.h" #include "WGPULogger.h" #include "RNFWorkletRuntimeRegistry.h" #include @@ -17,6 +16,15 @@ #include #include +// Forward declare to avoid circular dependency +namespace margelo { +template +struct JSIConverter; +} + +// Include the converter - this must come after forward declaration +#include "RNFJSIConverter.h" + namespace margelo { namespace jsi = facebook::jsi; diff --git a/packages/webgpu/cpp/jsi/RNFJSIConverter.h b/packages/webgpu/cpp/jsi/RNFJSIConverter.h index c2027232e..4e9fd2a0d 100644 --- a/packages/webgpu/cpp/jsi/RNFJSIConverter.h +++ b/packages/webgpu/cpp/jsi/RNFJSIConverter.h @@ -20,7 +20,6 @@ #include #include "RNFEnumMapper.h" -#include "RNFHybridObject.h" #include "RNFJSIHelper.h" #include "RNFPromise.h" #include "RNFWorkletRuntimeRegistry.h" diff --git a/packages/webgpu/cpp/rnwgpu/api/Convertors.h b/packages/webgpu/cpp/rnwgpu/api/Convertors.h index 0916d9fdc..7c3efe820 100644 --- a/packages/webgpu/cpp/rnwgpu/api/Convertors.h +++ b/packages/webgpu/cpp/rnwgpu/api/Convertors.h @@ -10,6 +10,7 @@ #include "webgpu/webgpu_cpp.h" +#include "Unions.h" #include "GPUBindGroupDescriptor.h" #include "GPUBindGroupEntry.h" #include "GPUBindGroupLayoutDescriptor.h" diff --git a/packages/webgpu/cpp/rnwgpu/api/GPUError.h b/packages/webgpu/cpp/rnwgpu/api/GPUError.h index d4bd6c242..b6afa97f8 100644 --- a/packages/webgpu/cpp/rnwgpu/api/GPUError.h +++ b/packages/webgpu/cpp/rnwgpu/api/GPUError.h @@ -1,8 +1,8 @@ #pragma once #include -#include #include +#include #include "webgpu/webgpu_cpp.h" diff --git a/packages/webgpu/cpp/rnwgpu/api/GPURenderPassEncoder.cpp b/packages/webgpu/cpp/rnwgpu/api/GPURenderPassEncoder.cpp index d7bab5cc5..99be1f252 100644 --- a/packages/webgpu/cpp/rnwgpu/api/GPURenderPassEncoder.cpp +++ b/packages/webgpu/cpp/rnwgpu/api/GPURenderPassEncoder.cpp @@ -2,8 +2,8 @@ #include #include -#include "GPURenderPassEncoder.h" #include "Convertors.h" +#include "GPURenderPassEncoder.h" namespace rnwgpu { diff --git a/packages/webgpu/cpp/rnwgpu/api/descriptors/Unions.h b/packages/webgpu/cpp/rnwgpu/api/descriptors/Unions.h index 15a450625..685edd39a 100644 --- a/packages/webgpu/cpp/rnwgpu/api/descriptors/Unions.h +++ b/packages/webgpu/cpp/rnwgpu/api/descriptors/Unions.h @@ -9,7 +9,7 @@ namespace margelo { namespace EnumMapper { -static void convertJSUnionToEnum(const std::string &inUnion, +inline void convertJSUnionToEnum(const std::string &inUnion, wgpu::AddressMode *outEnum) { if (inUnion == "clamp-to-edge") { *outEnum = wgpu::AddressMode::ClampToEdge; @@ -22,7 +22,7 @@ static void convertJSUnionToEnum(const std::string &inUnion, } } -static void convertEnumToJSUnion(wgpu::AddressMode inEnum, +inline void convertEnumToJSUnion(wgpu::AddressMode inEnum, std::string *outUnion) { switch (inEnum) { case wgpu::AddressMode::ClampToEdge: @@ -39,7 +39,7 @@ static void convertEnumToJSUnion(wgpu::AddressMode inEnum, } } -static void convertJSUnionToEnum(const std::string &inUnion, +inline void convertJSUnionToEnum(const std::string &inUnion, wgpu::BlendFactor *outEnum) { if (inUnion == "zero") { *outEnum = wgpu::BlendFactor::Zero; @@ -80,7 +80,7 @@ static void convertJSUnionToEnum(const std::string &inUnion, } } -static void convertEnumToJSUnion(wgpu::BlendFactor inEnum, +inline void convertEnumToJSUnion(wgpu::BlendFactor inEnum, std::string *outUnion) { switch (inEnum) { case wgpu::BlendFactor::Zero: @@ -139,7 +139,7 @@ static void convertEnumToJSUnion(wgpu::BlendFactor inEnum, } } -static void convertJSUnionToEnum(const std::string &inUnion, +inline void convertJSUnionToEnum(const std::string &inUnion, wgpu::BlendOperation *outEnum) { if (inUnion == "add") { *outEnum = wgpu::BlendOperation::Add; @@ -156,7 +156,7 @@ static void convertJSUnionToEnum(const std::string &inUnion, } } -static void convertEnumToJSUnion(wgpu::BlendOperation inEnum, +inline void convertEnumToJSUnion(wgpu::BlendOperation inEnum, std::string *outUnion) { switch (inEnum) { case wgpu::BlendOperation::Add: @@ -179,7 +179,7 @@ static void convertEnumToJSUnion(wgpu::BlendOperation inEnum, } } -static void convertJSUnionToEnum(const std::string &inUnion, +inline void convertJSUnionToEnum(const std::string &inUnion, wgpu::BufferBindingType *outEnum) { if (inUnion == "uniform") { *outEnum = wgpu::BufferBindingType::Uniform; @@ -192,7 +192,7 @@ static void convertJSUnionToEnum(const std::string &inUnion, } } -static void convertEnumToJSUnion(wgpu::BufferBindingType inEnum, +inline void convertEnumToJSUnion(wgpu::BufferBindingType inEnum, std::string *outUnion) { switch (inEnum) { case wgpu::BufferBindingType::Uniform: @@ -209,7 +209,7 @@ static void convertEnumToJSUnion(wgpu::BufferBindingType inEnum, } } -static void convertJSUnionToEnum(const std::string &inUnion, +inline void convertJSUnionToEnum(const std::string &inUnion, wgpu::BufferMapState *outEnum) { if (inUnion == "unmapped") { *outEnum = wgpu::BufferMapState::Unmapped; @@ -222,7 +222,7 @@ static void convertJSUnionToEnum(const std::string &inUnion, } } -static void convertEnumToJSUnion(wgpu::BufferMapState inEnum, +inline void convertEnumToJSUnion(wgpu::BufferMapState inEnum, std::string *outUnion) { switch (inEnum) { case wgpu::BufferMapState::Unmapped: @@ -239,7 +239,7 @@ static void convertEnumToJSUnion(wgpu::BufferMapState inEnum, } } -static void convertJSUnionToEnum(const std::string &inUnion, +inline void convertJSUnionToEnum(const std::string &inUnion, wgpu::CompareFunction *outEnum) { if (inUnion == "never") { *outEnum = wgpu::CompareFunction::Never; @@ -262,7 +262,7 @@ static void convertJSUnionToEnum(const std::string &inUnion, } } -static void convertEnumToJSUnion(wgpu::CompareFunction inEnum, +inline void convertEnumToJSUnion(wgpu::CompareFunction inEnum, std::string *outUnion) { switch (inEnum) { case wgpu::CompareFunction::Never: @@ -294,7 +294,7 @@ static void convertEnumToJSUnion(wgpu::CompareFunction inEnum, } } -static void convertJSUnionToEnum(const std::string &inUnion, +inline void convertJSUnionToEnum(const std::string &inUnion, wgpu::CompilationMessageType *outEnum) { if (inUnion == "error") { *outEnum = wgpu::CompilationMessageType::Error; @@ -307,7 +307,7 @@ static void convertJSUnionToEnum(const std::string &inUnion, } } -static void convertEnumToJSUnion(wgpu::CompilationMessageType inEnum, +inline void convertEnumToJSUnion(wgpu::CompilationMessageType inEnum, std::string *outUnion) { switch (inEnum) { case wgpu::CompilationMessageType::Error: @@ -324,7 +324,7 @@ static void convertEnumToJSUnion(wgpu::CompilationMessageType inEnum, } } -static void convertJSUnionToEnum(const std::string &inUnion, +inline void convertJSUnionToEnum(const std::string &inUnion, wgpu::CullMode *outEnum) { if (inUnion == "none") { *outEnum = wgpu::CullMode::None; @@ -337,7 +337,7 @@ static void convertJSUnionToEnum(const std::string &inUnion, } } -static void convertEnumToJSUnion(wgpu::CullMode inEnum, std::string *outUnion) { +inline void convertEnumToJSUnion(wgpu::CullMode inEnum, std::string *outUnion) { switch (inEnum) { case wgpu::CullMode::None: *outUnion = "none"; @@ -353,7 +353,7 @@ static void convertEnumToJSUnion(wgpu::CullMode inEnum, std::string *outUnion) { } } -static void convertJSUnionToEnum(const std::string &inUnion, +inline void convertJSUnionToEnum(const std::string &inUnion, wgpu::DeviceLostReason *outEnum) { if (inUnion == "unknown") { *outEnum = wgpu::DeviceLostReason::Unknown; @@ -364,7 +364,7 @@ static void convertJSUnionToEnum(const std::string &inUnion, } } -static void convertEnumToJSUnion(wgpu::DeviceLostReason inEnum, +inline void convertEnumToJSUnion(wgpu::DeviceLostReason inEnum, std::string *outUnion) { switch (inEnum) { case wgpu::DeviceLostReason::Unknown: @@ -378,7 +378,7 @@ static void convertEnumToJSUnion(wgpu::DeviceLostReason inEnum, } } -static void convertJSUnionToEnum(const std::string &inUnion, +inline void convertJSUnionToEnum(const std::string &inUnion, wgpu::ErrorFilter *outEnum) { if (inUnion == "validation") { *outEnum = wgpu::ErrorFilter::Validation; @@ -391,7 +391,7 @@ static void convertJSUnionToEnum(const std::string &inUnion, } } -static void convertEnumToJSUnion(wgpu::ErrorFilter inEnum, +inline void convertEnumToJSUnion(wgpu::ErrorFilter inEnum, std::string *outUnion) { switch (inEnum) { case wgpu::ErrorFilter::Validation: @@ -408,7 +408,7 @@ static void convertEnumToJSUnion(wgpu::ErrorFilter inEnum, } } -static void convertJSUnionToEnum(const std::string &inUnion, +inline void convertJSUnionToEnum(const std::string &inUnion, wgpu::FeatureName *outEnum) { if (inUnion == "depth-clip-control") { *outEnum = wgpu::FeatureName::DepthClipControl; @@ -542,7 +542,7 @@ static void convertJSUnionToEnum(const std::string &inUnion, } } -static void convertEnumToJSUnion(wgpu::FeatureName inEnum, +inline void convertEnumToJSUnion(wgpu::FeatureName inEnum, std::string *outUnion) { switch (inEnum) { case wgpu::FeatureName::DepthClipControl: @@ -742,7 +742,7 @@ static void convertEnumToJSUnion(wgpu::FeatureName inEnum, } } -static void convertJSUnionToEnum(const std::string &inUnion, +inline void convertJSUnionToEnum(const std::string &inUnion, wgpu::FilterMode *outEnum) { if (inUnion == "nearest") { *outEnum = wgpu::FilterMode::Nearest; @@ -753,7 +753,7 @@ static void convertJSUnionToEnum(const std::string &inUnion, } } -static void convertEnumToJSUnion(wgpu::FilterMode inEnum, +inline void convertEnumToJSUnion(wgpu::FilterMode inEnum, std::string *outUnion) { switch (inEnum) { case wgpu::FilterMode::Nearest: @@ -767,7 +767,7 @@ static void convertEnumToJSUnion(wgpu::FilterMode inEnum, } } -static void convertJSUnionToEnum(const std::string &inUnion, +inline void convertJSUnionToEnum(const std::string &inUnion, wgpu::FrontFace *outEnum) { if (inUnion == "ccw") { *outEnum = wgpu::FrontFace::CCW; @@ -778,7 +778,7 @@ static void convertJSUnionToEnum(const std::string &inUnion, } } -static void convertEnumToJSUnion(wgpu::FrontFace inEnum, +inline void convertEnumToJSUnion(wgpu::FrontFace inEnum, std::string *outUnion) { switch (inEnum) { case wgpu::FrontFace::CCW: @@ -792,7 +792,7 @@ static void convertEnumToJSUnion(wgpu::FrontFace inEnum, } } -static void convertJSUnionToEnum(const std::string &inUnion, +inline void convertJSUnionToEnum(const std::string &inUnion, wgpu::IndexFormat *outEnum) { if (inUnion == "uint16") { *outEnum = wgpu::IndexFormat::Uint16; @@ -803,7 +803,7 @@ static void convertJSUnionToEnum(const std::string &inUnion, } } -static void convertEnumToJSUnion(wgpu::IndexFormat inEnum, +inline void convertEnumToJSUnion(wgpu::IndexFormat inEnum, std::string *outUnion) { switch (inEnum) { case wgpu::IndexFormat::Uint16: @@ -817,7 +817,7 @@ static void convertEnumToJSUnion(wgpu::IndexFormat inEnum, } } -static void convertJSUnionToEnum(const std::string &inUnion, +inline void convertJSUnionToEnum(const std::string &inUnion, wgpu::LoadOp *outEnum) { if (inUnion == "load") { *outEnum = wgpu::LoadOp::Load; @@ -828,7 +828,7 @@ static void convertJSUnionToEnum(const std::string &inUnion, } } -static void convertEnumToJSUnion(wgpu::LoadOp inEnum, std::string *outUnion) { +inline void convertEnumToJSUnion(wgpu::LoadOp inEnum, std::string *outUnion) { switch (inEnum) { case wgpu::LoadOp::Load: *outUnion = "load"; @@ -841,7 +841,7 @@ static void convertEnumToJSUnion(wgpu::LoadOp inEnum, std::string *outUnion) { } } -static void convertJSUnionToEnum(const std::string &inUnion, +inline void convertJSUnionToEnum(const std::string &inUnion, wgpu::MipmapFilterMode *outEnum) { if (inUnion == "nearest") { *outEnum = wgpu::MipmapFilterMode::Nearest; @@ -852,7 +852,7 @@ static void convertJSUnionToEnum(const std::string &inUnion, } } -static void convertEnumToJSUnion(wgpu::MipmapFilterMode inEnum, +inline void convertEnumToJSUnion(wgpu::MipmapFilterMode inEnum, std::string *outUnion) { switch (inEnum) { case wgpu::MipmapFilterMode::Nearest: @@ -866,7 +866,7 @@ static void convertEnumToJSUnion(wgpu::MipmapFilterMode inEnum, } } -static void convertJSUnionToEnum(const std::string &inUnion, +inline void convertJSUnionToEnum(const std::string &inUnion, wgpu::PowerPreference *outEnum) { if (inUnion == "low-power") { *outEnum = wgpu::PowerPreference::LowPower; @@ -877,7 +877,7 @@ static void convertJSUnionToEnum(const std::string &inUnion, } } -static void convertEnumToJSUnion(wgpu::PowerPreference inEnum, +inline void convertEnumToJSUnion(wgpu::PowerPreference inEnum, std::string *outUnion) { switch (inEnum) { case wgpu::PowerPreference::LowPower: @@ -891,7 +891,7 @@ static void convertEnumToJSUnion(wgpu::PowerPreference inEnum, } } -static void convertJSUnionToEnum(const std::string &inUnion, +inline void convertJSUnionToEnum(const std::string &inUnion, wgpu::PrimitiveTopology *outEnum) { if (inUnion == "point-list") { *outEnum = wgpu::PrimitiveTopology::PointList; @@ -908,7 +908,7 @@ static void convertJSUnionToEnum(const std::string &inUnion, } } -static void convertEnumToJSUnion(wgpu::PrimitiveTopology inEnum, +inline void convertEnumToJSUnion(wgpu::PrimitiveTopology inEnum, std::string *outUnion) { switch (inEnum) { case wgpu::PrimitiveTopology::PointList: @@ -931,7 +931,7 @@ static void convertEnumToJSUnion(wgpu::PrimitiveTopology inEnum, } } -static void convertJSUnionToEnum(const std::string &inUnion, +inline void convertJSUnionToEnum(const std::string &inUnion, wgpu::QueryType *outEnum) { if (inUnion == "occlusion") { *outEnum = wgpu::QueryType::Occlusion; @@ -942,7 +942,7 @@ static void convertJSUnionToEnum(const std::string &inUnion, } } -static void convertEnumToJSUnion(wgpu::QueryType inEnum, +inline void convertEnumToJSUnion(wgpu::QueryType inEnum, std::string *outUnion) { switch (inEnum) { case wgpu::QueryType::Occlusion: @@ -956,7 +956,7 @@ static void convertEnumToJSUnion(wgpu::QueryType inEnum, } } -static void convertJSUnionToEnum(const std::string &inUnion, +inline void convertJSUnionToEnum(const std::string &inUnion, wgpu::SamplerBindingType *outEnum) { if (inUnion == "filtering") { *outEnum = wgpu::SamplerBindingType::Filtering; @@ -969,7 +969,7 @@ static void convertJSUnionToEnum(const std::string &inUnion, } } -static void convertEnumToJSUnion(wgpu::SamplerBindingType inEnum, +inline void convertEnumToJSUnion(wgpu::SamplerBindingType inEnum, std::string *outUnion) { switch (inEnum) { case wgpu::SamplerBindingType::Filtering: @@ -986,7 +986,7 @@ static void convertEnumToJSUnion(wgpu::SamplerBindingType inEnum, } } -static void convertJSUnionToEnum(const std::string &inUnion, +inline void convertJSUnionToEnum(const std::string &inUnion, wgpu::StencilOperation *outEnum) { if (inUnion == "zero") { *outEnum = wgpu::StencilOperation::Zero; @@ -1009,7 +1009,7 @@ static void convertJSUnionToEnum(const std::string &inUnion, } } -static void convertEnumToJSUnion(wgpu::StencilOperation inEnum, +inline void convertEnumToJSUnion(wgpu::StencilOperation inEnum, std::string *outUnion) { switch (inEnum) { case wgpu::StencilOperation::Zero: @@ -1041,7 +1041,7 @@ static void convertEnumToJSUnion(wgpu::StencilOperation inEnum, } } -static void convertJSUnionToEnum(const std::string &inUnion, +inline void convertJSUnionToEnum(const std::string &inUnion, wgpu::StorageTextureAccess *outEnum) { if (inUnion == "write-only") { *outEnum = wgpu::StorageTextureAccess::WriteOnly; @@ -1054,7 +1054,7 @@ static void convertJSUnionToEnum(const std::string &inUnion, } } -static void convertEnumToJSUnion(wgpu::StorageTextureAccess inEnum, +inline void convertEnumToJSUnion(wgpu::StorageTextureAccess inEnum, std::string *outUnion) { switch (inEnum) { case wgpu::StorageTextureAccess::WriteOnly: @@ -1071,7 +1071,7 @@ static void convertEnumToJSUnion(wgpu::StorageTextureAccess inEnum, } } -static void convertJSUnionToEnum(const std::string &inUnion, +inline void convertJSUnionToEnum(const std::string &inUnion, wgpu::StoreOp *outEnum) { if (inUnion == "store") { *outEnum = wgpu::StoreOp::Store; @@ -1082,7 +1082,7 @@ static void convertJSUnionToEnum(const std::string &inUnion, } } -static void convertEnumToJSUnion(wgpu::StoreOp inEnum, std::string *outUnion) { +inline void convertEnumToJSUnion(wgpu::StoreOp inEnum, std::string *outUnion) { switch (inEnum) { case wgpu::StoreOp::Store: *outUnion = "store"; @@ -1095,7 +1095,7 @@ static void convertEnumToJSUnion(wgpu::StoreOp inEnum, std::string *outUnion) { } } -static void convertJSUnionToEnum(const std::string &inUnion, +inline void convertJSUnionToEnum(const std::string &inUnion, wgpu::TextureAspect *outEnum) { if (inUnion == "all") { *outEnum = wgpu::TextureAspect::All; @@ -1108,7 +1108,7 @@ static void convertJSUnionToEnum(const std::string &inUnion, } } -static void convertEnumToJSUnion(wgpu::TextureAspect inEnum, +inline void convertEnumToJSUnion(wgpu::TextureAspect inEnum, std::string *outUnion) { switch (inEnum) { case wgpu::TextureAspect::All: @@ -1125,7 +1125,7 @@ static void convertEnumToJSUnion(wgpu::TextureAspect inEnum, } } -static void convertJSUnionToEnum(const std::string &inUnion, +inline void convertJSUnionToEnum(const std::string &inUnion, wgpu::TextureDimension *outEnum) { if (inUnion == "1d") { *outEnum = wgpu::TextureDimension::e1D; @@ -1138,7 +1138,7 @@ static void convertJSUnionToEnum(const std::string &inUnion, } } -static void convertEnumToJSUnion(wgpu::TextureDimension inEnum, +inline void convertEnumToJSUnion(wgpu::TextureDimension inEnum, std::string *outUnion) { switch (inEnum) { case wgpu::TextureDimension::e1D: @@ -1155,7 +1155,7 @@ static void convertEnumToJSUnion(wgpu::TextureDimension inEnum, } } -static void convertJSUnionToEnum(const std::string &inUnion, +inline void convertJSUnionToEnum(const std::string &inUnion, wgpu::TextureFormat *outEnum) { if (inUnion == "depth32float-stencil8") { *outEnum = wgpu::TextureFormat::Depth32FloatStencil8; @@ -1352,7 +1352,7 @@ static void convertJSUnionToEnum(const std::string &inUnion, } } -static void convertEnumToJSUnion(wgpu::TextureFormat inEnum, +inline void convertEnumToJSUnion(wgpu::TextureFormat inEnum, std::string *outUnion) { switch (inEnum) { case wgpu::TextureFormat::Depth32FloatStencil8: @@ -1645,7 +1645,7 @@ static void convertEnumToJSUnion(wgpu::TextureFormat inEnum, } } -static void convertJSUnionToEnum(const std::string &inUnion, +inline void convertJSUnionToEnum(const std::string &inUnion, wgpu::TextureSampleType *outEnum) { if (inUnion == "float") { *outEnum = wgpu::TextureSampleType::Float; @@ -1662,7 +1662,7 @@ static void convertJSUnionToEnum(const std::string &inUnion, } } -static void convertEnumToJSUnion(wgpu::TextureSampleType inEnum, +inline void convertEnumToJSUnion(wgpu::TextureSampleType inEnum, std::string *outUnion) { switch (inEnum) { case wgpu::TextureSampleType::Float: @@ -1685,7 +1685,7 @@ static void convertEnumToJSUnion(wgpu::TextureSampleType inEnum, } } -static void convertJSUnionToEnum(const std::string &inUnion, +inline void convertJSUnionToEnum(const std::string &inUnion, wgpu::TextureViewDimension *outEnum) { if (inUnion == "1d") { *outEnum = wgpu::TextureViewDimension::e1D; @@ -1704,7 +1704,7 @@ static void convertJSUnionToEnum(const std::string &inUnion, } } -static void convertEnumToJSUnion(wgpu::TextureViewDimension inEnum, +inline void convertEnumToJSUnion(wgpu::TextureViewDimension inEnum, std::string *outUnion) { switch (inEnum) { case wgpu::TextureViewDimension::e1D: @@ -1730,7 +1730,7 @@ static void convertEnumToJSUnion(wgpu::TextureViewDimension inEnum, } } -static void convertJSUnionToEnum(const std::string &inUnion, +inline void convertJSUnionToEnum(const std::string &inUnion, wgpu::VertexFormat *outEnum) { if (inUnion == "uint32") { *outEnum = wgpu::VertexFormat::Uint32; @@ -1799,7 +1799,7 @@ static void convertJSUnionToEnum(const std::string &inUnion, } } -static void convertEnumToJSUnion(wgpu::VertexFormat inEnum, +inline void convertEnumToJSUnion(wgpu::VertexFormat inEnum, std::string *outUnion) { switch (inEnum) { case wgpu::VertexFormat::Uint32: @@ -1900,7 +1900,7 @@ static void convertEnumToJSUnion(wgpu::VertexFormat inEnum, } } -static void convertJSUnionToEnum(const std::string &inUnion, +inline void convertJSUnionToEnum(const std::string &inUnion, wgpu::VertexStepMode *outEnum) { if (inUnion == "vertex") { *outEnum = wgpu::VertexStepMode::Vertex; @@ -1911,7 +1911,7 @@ static void convertJSUnionToEnum(const std::string &inUnion, } } -static void convertEnumToJSUnion(wgpu::VertexStepMode inEnum, +inline void convertEnumToJSUnion(wgpu::VertexStepMode inEnum, std::string *outUnion) { switch (inEnum) { case wgpu::VertexStepMode::Vertex: @@ -1925,7 +1925,7 @@ static void convertEnumToJSUnion(wgpu::VertexStepMode inEnum, } } -static void convertJSUnionToEnum(const std::string &inUnion, +inline void convertJSUnionToEnum(const std::string &inUnion, rnwgpu::PredefinedColorSpace *outEnum) { if (inUnion == "display-p3") { *outEnum = rnwgpu::PredefinedColorSpace::DisplayP3; @@ -1936,7 +1936,7 @@ static void convertJSUnionToEnum(const std::string &inUnion, } } -static void convertEnumToJSUnion(rnwgpu::PredefinedColorSpace inEnum, +inline void convertEnumToJSUnion(rnwgpu::PredefinedColorSpace inEnum, std::string *outUnion) { switch (inEnum) { case rnwgpu::PredefinedColorSpace::DisplayP3: @@ -1950,7 +1950,7 @@ static void convertEnumToJSUnion(rnwgpu::PredefinedColorSpace inEnum, } } -static void convertJSUnionToEnum(const std::string &inUnion, +inline void convertJSUnionToEnum(const std::string &inUnion, rnwgpu::PremultiplyAlpha *outEnum) { if (inUnion == "none") { *outEnum = rnwgpu::PremultiplyAlpha::None; @@ -1963,7 +1963,7 @@ static void convertJSUnionToEnum(const std::string &inUnion, } } -static void convertEnumToJSUnion(rnwgpu::PremultiplyAlpha inEnum, +inline void convertEnumToJSUnion(rnwgpu::PremultiplyAlpha inEnum, std::string *outUnion) { switch (inEnum) { case rnwgpu::PremultiplyAlpha::None: From 1c8984972445bf58ab6bde36cf4a89381f890635 Mon Sep 17 00:00:00 2001 From: William Candillon Date: Thu, 11 Sep 2025 19:16:32 +0200 Subject: [PATCH 2/3] :wrench: --- packages/webgpu/cpp/jsi/RNFJSIConverter.h | 2 ++ packages/webgpu/cpp/rnwgpu/api/Convertors.h | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/packages/webgpu/cpp/jsi/RNFJSIConverter.h b/packages/webgpu/cpp/jsi/RNFJSIConverter.h index 4e9fd2a0d..2dbd6f21c 100644 --- a/packages/webgpu/cpp/jsi/RNFJSIConverter.h +++ b/packages/webgpu/cpp/jsi/RNFJSIConverter.h @@ -27,6 +27,8 @@ #include "Dispatcher.h" #include "ThreadPool.h" +#include "Unions.h" + // This number is the maximum integer that can be represented exactly as a double #define MAX_SAFE_INTEGER static_cast(9007199254740991) diff --git a/packages/webgpu/cpp/rnwgpu/api/Convertors.h b/packages/webgpu/cpp/rnwgpu/api/Convertors.h index 7c3efe820..e168afcba 100644 --- a/packages/webgpu/cpp/rnwgpu/api/Convertors.h +++ b/packages/webgpu/cpp/rnwgpu/api/Convertors.h @@ -10,7 +10,6 @@ #include "webgpu/webgpu_cpp.h" -#include "Unions.h" #include "GPUBindGroupDescriptor.h" #include "GPUBindGroupEntry.h" #include "GPUBindGroupLayoutDescriptor.h" @@ -61,6 +60,7 @@ #include "GPUVertexAttribute.h" #include "GPUVertexBufferLayout.h" #include "GPUVertexState.h" +#include "Unions.h" namespace rnwgpu { From 5305423e5be0667a64a1631bdebaee2701f885f1 Mon Sep 17 00:00:00 2001 From: William Candillon Date: Thu, 11 Sep 2025 20:57:51 +0200 Subject: [PATCH 3/3] Apply suggestion from @Copilot Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- packages/webgpu/cpp/jsi/RNFHybridObject.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/webgpu/cpp/jsi/RNFHybridObject.h b/packages/webgpu/cpp/jsi/RNFHybridObject.h index 3ed3eb25e..c14252628 100644 --- a/packages/webgpu/cpp/jsi/RNFHybridObject.h +++ b/packages/webgpu/cpp/jsi/RNFHybridObject.h @@ -18,7 +18,7 @@ // Forward declare to avoid circular dependency namespace margelo { -template +template struct JSIConverter; }