summaryrefslogtreecommitdiff
path: root/doc
diff options
context:
space:
mode:
authorskal <pascal.massimino@gmail.com>2026-02-17 08:50:24 +0100
committerskal <pascal.massimino@gmail.com>2026-02-17 08:50:24 +0100
commit59b7ca9adff07f8d457fba53ba4d67c293229b68 (patch)
treef84cd7fcb42cffa15fad7bc339abfb2b8e13cb3c /doc
parent7041babc9e5333d01191f3eb80fd711bd26cd4f7 (diff)
refactor: centralize platform-specific code in gpu.h
Move platform-specific type definitions to gpu.h and establish coding rule that platform ifdefs must be confined to gpu/platform layers. - gpu.h: add GpuTextureCopyInfo, GpuTextureDataLayout type aliases - effect.cc: use GpuTextureCopyInfo instead of platform ifdefs - texture_manager.cc: use type aliases and label_view() helper - CODING_STYLE.md: add platform-specific code section with rule Tests: 34/34 passing Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Diffstat (limited to 'doc')
-rw-r--r--doc/CODING_STYLE.md35
1 files changed, 35 insertions, 0 deletions
diff --git a/doc/CODING_STYLE.md b/doc/CODING_STYLE.md
index 5c86409..254a1c3 100644
--- a/doc/CODING_STYLE.md
+++ b/doc/CODING_STYLE.md
@@ -52,6 +52,41 @@ Always use `defined()` and closing comment.
---
+## Platform-Specific Code
+
+**Rule:** Platform-specific compilation (`#ifdef DEMO_CROSS_COMPILE_WIN32`, etc.) must be confined to `src/gpu/gpu.{h,cc}` and `src/platform/platform.{h,cc}`.
+
+### Correct
+```cpp
+// In gpu.h - abstract platform differences
+#if defined(DEMO_CROSS_COMPILE_WIN32)
+using GpuTextureCopyInfo = WGPUImageCopyTexture;
+#else
+using GpuTextureCopyInfo = WGPUTexelCopyTextureInfo;
+#endif
+
+// In effect.cc - use abstraction
+GpuTextureCopyInfo src_copy = {
+ .texture = src, .mipLevel = 0, .origin = {0, 0, 0}};
+```
+
+### Wrong
+```cpp
+// In effect.cc - direct platform check (FORBIDDEN)
+#if defined(DEMO_CROSS_COMPILE_WIN32)
+ WGPUImageCopyTexture src_copy = {...};
+#else
+ WGPUTexelCopyTextureInfo src_copy = {...};
+#endif
+```
+
+**Rationale:**
+- Centralizes platform handling in gpu/platform layers
+- Prevents #ifdef proliferation across codebase
+- Makes cross-platform testing easier
+
+---
+
## Struct Initialization
### Good