Platform checks
This commit is contained in:
@@ -555,3 +555,26 @@ odin run meta -- gen-shaders
|
||||
```
|
||||
|
||||
Requires `glslangValidator` and `spirv-cross` on PATH.
|
||||
|
||||
### Shader format selection
|
||||
|
||||
The library embeds shader bytecode per compile target — MSL + `main0` entry point on Darwin (via
|
||||
`spirv-cross --msl`, which renames `main` because it is reserved in Metal), SPIR-V + `main` entry
|
||||
point elsewhere. Three compile-time constants in `draw.odin` expose the build's shader configuration:
|
||||
|
||||
| Constant | Type | Darwin | Other |
|
||||
| ----------------------------- | ------------------------- | --------- | ---------- |
|
||||
| `PLATFORM_SHADER_FORMAT_FLAG` | `sdl.GPUShaderFormatFlag` | `.MSL` | `.SPIRV` |
|
||||
| `PLATFORM_SHADER_FORMAT` | `sdl.GPUShaderFormat` | `{.MSL}` | `{.SPIRV}` |
|
||||
| `SHADER_ENTRY` | `cstring` | `"main0"` | `"main"` |
|
||||
|
||||
Pass `PLATFORM_SHADER_FORMAT` to `sdl.CreateGPUDevice` so SDL selects a backend compatible with the
|
||||
embedded bytecode:
|
||||
|
||||
```
|
||||
gpu := sdl.CreateGPUDevice(draw.PLATFORM_SHADER_FORMAT, true, nil)
|
||||
```
|
||||
|
||||
At init time the library calls `sdl.GetGPUShaderFormats(device)` to verify the active backend
|
||||
accepts `PLATFORM_SHADER_FORMAT_FLAG`. If it does not, `draw.init` returns `false` with a
|
||||
descriptive log message showing both the embedded and active format sets.
|
||||
|
||||
Reference in New Issue
Block a user