diff options
| author | skal <pascal.massimino@gmail.com> | 2026-02-17 08:50:24 +0100 |
|---|---|---|
| committer | skal <pascal.massimino@gmail.com> | 2026-02-17 08:50:24 +0100 |
| commit | 59b7ca9adff07f8d457fba53ba4d67c293229b68 (patch) | |
| tree | f84cd7fcb42cffa15fad7bc339abfb2b8e13cb3c /doc/CODING_STYLE.md | |
| parent | 7041babc9e5333d01191f3eb80fd711bd26cd4f7 (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/CODING_STYLE.md')
| -rw-r--r-- | doc/CODING_STYLE.md | 35 |
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 |
