lang: rename signed integer types sN -> iN
Surface rename of the signed integer family: s1..s64 become i1..i64
(u1..u64, usize, isize unchanged). 'string' keeps the s-prefix arm in
name classification; width parsing moves to the i-prefix arm next to
isize.
Internal TypeId tags follow the surface (.s8/.s16/.s32/.s64 ->
.i8/.i16/.i32/.i64), as do mono-key mangle fragments (ptr_i64,
tu_i64_bool) and all display/diagnostic formatting (i{d}).
Migrated in the same sweep: stdlib + examples + issue repros + FFI C
companions (shared symbol names like ffi_id_i64), expected
stdout/stderr/ir snapshots, specs.md, readme.md, CLAUDE.md/AGENTS.md,
implementation_plan.md, docs/, issue writeups. Vendored stb_image and
historical flow state left untouched.
zig build test: 426/426; examples suite: 595/595.
This commit is contained in:
@@ -11,10 +11,10 @@ GPU :: protocol {
|
||||
// Bind the GPU to a backend-specific render target (e.g. a
|
||||
// CAMetalLayer on iOS). pixel_w/pixel_h are the drawable's pixel
|
||||
// dimensions; call resize when they change.
|
||||
init :: (target: *void, pixel_w: s32, pixel_h: s32) -> bool;
|
||||
init :: (target: *void, pixel_w: i32, pixel_h: i32) -> bool;
|
||||
shutdown :: ();
|
||||
|
||||
resize :: (pixel_w: s32, pixel_h: s32);
|
||||
resize :: (pixel_w: i32, pixel_h: i32);
|
||||
|
||||
begin_frame :: (clear: ClearColor) -> bool;
|
||||
|
||||
@@ -26,17 +26,17 @@ GPU :: protocol {
|
||||
end_frame :: (target_time: f64);
|
||||
|
||||
create_shader :: (vsrc: string, fsrc: string) -> ShaderHandle;
|
||||
create_buffer :: (size_bytes: s64) -> BufferHandle;
|
||||
update_buffer :: (buf: BufferHandle, data: *void, size_bytes: s64);
|
||||
create_buffer :: (size_bytes: i64) -> BufferHandle;
|
||||
update_buffer :: (buf: BufferHandle, data: *void, size_bytes: i64);
|
||||
// Sub-buffer write at a byte offset. Required for Metal where re-using
|
||||
// the same buffer slice across multiple draws in a single command
|
||||
// encoder is a race: the GPU executes draws asynchronously and reads
|
||||
// shared-storage buffer contents at execution time, so the LAST writer
|
||||
// wins if every flush targets offset 0. Renderers that issue more than
|
||||
// one draw per frame must advance their write offset between flushes.
|
||||
update_buffer_at :: (buf: BufferHandle, data: *void, size_bytes: s64, byte_offset: s64);
|
||||
create_texture :: (w: s32, h: s32, format: TextureFormat, pixels: *void) -> TextureHandle;
|
||||
update_texture_region :: (tex: TextureHandle, x: s32, y: s32, w: s32, h: s32, pixels: *void);
|
||||
update_buffer_at :: (buf: BufferHandle, data: *void, size_bytes: i64, byte_offset: i64);
|
||||
create_texture :: (w: i32, h: i32, format: TextureFormat, pixels: *void) -> TextureHandle;
|
||||
update_texture_region :: (tex: TextureHandle, x: i32, y: i32, w: i32, h: i32, pixels: *void);
|
||||
|
||||
// Release a GPU resource. Implementations release the backing object and
|
||||
// null the slot so the handle becomes inert. Calling with handle 0 or
|
||||
@@ -49,9 +49,9 @@ GPU :: protocol {
|
||||
set_shader :: (sh: ShaderHandle);
|
||||
set_vertex_buffer :: (buf: BufferHandle);
|
||||
set_texture :: (slot: u32, tex: TextureHandle);
|
||||
set_vertex_constants :: (slot: u32, data: *void, size_bytes: s64);
|
||||
set_scissor :: (x: s32, y: s32, w: s32, h: s32);
|
||||
set_vertex_constants :: (slot: u32, data: *void, size_bytes: i64);
|
||||
set_scissor :: (x: i32, y: i32, w: i32, h: i32);
|
||||
disable_scissor :: ();
|
||||
|
||||
draw_triangles :: (vertex_offset: s32, vertex_count: s32);
|
||||
draw_triangles :: (vertex_offset: i32, vertex_count: i32);
|
||||
}
|
||||
|
||||
@@ -48,13 +48,13 @@ Gles3TextureSlot :: struct {
|
||||
|
||||
Gles3ShaderSlot :: struct {
|
||||
program: u32 = 0;
|
||||
proj_loc: s32 = 0 - 1;
|
||||
tex_loc: s32 = 0 - 1;
|
||||
proj_loc: i32 = 0 - 1;
|
||||
tex_loc: i32 = 0 - 1;
|
||||
}
|
||||
|
||||
Gles3Gpu :: struct {
|
||||
pixel_w: s32 = 0;
|
||||
pixel_h: s32 = 0;
|
||||
pixel_w: i32 = 0;
|
||||
pixel_h: i32 = 0;
|
||||
|
||||
// The renderer's vertex layout is fixed (see file header). One VAO,
|
||||
// reused across every set_vertex_buffer.
|
||||
@@ -82,7 +82,7 @@ impl GPU for Gles3Gpu {
|
||||
// single shared VAO. Must be called once the EGL context is
|
||||
// current (AndroidPlatform.run_frame_loop ensures this before
|
||||
// invoking the user's per-frame closure). `target` is unused.
|
||||
init :: (self: *Gles3Gpu, target: *void, pixel_w: s32, pixel_h: s32) -> bool {
|
||||
init :: (self: *Gles3Gpu, target: *void, pixel_w: i32, pixel_h: i32) -> bool {
|
||||
inline if OS != .android { return false; }
|
||||
self.pixel_w = pixel_w;
|
||||
self.pixel_h = pixel_h;
|
||||
@@ -110,7 +110,7 @@ impl GPU for Gles3Gpu {
|
||||
// happens when the NativeActivity tears down).
|
||||
}
|
||||
|
||||
resize :: (self: *Gles3Gpu, pixel_w: s32, pixel_h: s32) {
|
||||
resize :: (self: *Gles3Gpu, pixel_w: i32, pixel_h: i32) {
|
||||
self.pixel_w = pixel_w;
|
||||
self.pixel_h = pixel_h;
|
||||
}
|
||||
@@ -145,7 +145,7 @@ impl GPU for Gles3Gpu {
|
||||
xx self.shaders.len
|
||||
}
|
||||
|
||||
create_buffer :: (self: *Gles3Gpu, size_bytes: s64) -> BufferHandle {
|
||||
create_buffer :: (self: *Gles3Gpu, size_bytes: i64) -> BufferHandle {
|
||||
inline if OS != .android { return 0; }
|
||||
if size_bytes <= 0 { return 0; }
|
||||
b : u32 = 0;
|
||||
@@ -156,7 +156,7 @@ impl GPU for Gles3Gpu {
|
||||
xx self.buffers.len
|
||||
}
|
||||
|
||||
update_buffer :: (self: *Gles3Gpu, handle: BufferHandle, data: *void, size_bytes: s64) {
|
||||
update_buffer :: (self: *Gles3Gpu, handle: BufferHandle, data: *void, size_bytes: i64) {
|
||||
inline if OS != .android { return; }
|
||||
buf := gles3_lookup_buffer(self, handle);
|
||||
if buf == 0 { return; }
|
||||
@@ -166,7 +166,7 @@ impl GPU for Gles3Gpu {
|
||||
glBufferSubData(GL_ARRAY_BUFFER, 0, xx size_bytes, data);
|
||||
}
|
||||
|
||||
update_buffer_at :: (self: *Gles3Gpu, handle: BufferHandle, data: *void, size_bytes: s64, byte_offset: s64) {
|
||||
update_buffer_at :: (self: *Gles3Gpu, handle: BufferHandle, data: *void, size_bytes: i64, byte_offset: i64) {
|
||||
inline if OS != .android { return; }
|
||||
buf := gles3_lookup_buffer(self, handle);
|
||||
if buf == 0 { return; }
|
||||
@@ -177,12 +177,12 @@ impl GPU for Gles3Gpu {
|
||||
glBufferSubData(GL_ARRAY_BUFFER, xx byte_offset, xx size_bytes, data);
|
||||
}
|
||||
|
||||
create_texture :: (self: *Gles3Gpu, w: s32, h: s32, format: TextureFormat, pixels: *void) -> TextureHandle {
|
||||
create_texture :: (self: *Gles3Gpu, w: i32, h: i32, format: TextureFormat, pixels: *void) -> TextureHandle {
|
||||
inline if OS != .android { return 0; }
|
||||
if w <= 0 { return 0; }
|
||||
if h <= 0 { return 0; }
|
||||
|
||||
internal_fmt : s32 = 0;
|
||||
internal_fmt : i32 = 0;
|
||||
ext_fmt : u32 = 0;
|
||||
bpp : u32 = 0;
|
||||
if format == .rgba8 {
|
||||
@@ -210,10 +210,10 @@ impl GPU for Gles3Gpu {
|
||||
xx self.textures.len
|
||||
}
|
||||
|
||||
update_texture_region :: (self: *Gles3Gpu, handle: TextureHandle, x: s32, y: s32, w: s32, h: s32, pixels: *void) {
|
||||
update_texture_region :: (self: *Gles3Gpu, handle: TextureHandle, x: i32, y: i32, w: i32, h: i32, pixels: *void) {
|
||||
inline if OS != .android { return; }
|
||||
if handle == 0 { return; }
|
||||
h64 : s64 = xx handle;
|
||||
h64 : i64 = xx handle;
|
||||
if h64 > self.textures.len { return; }
|
||||
slot := self.textures.items[handle - 1];
|
||||
if slot.tex == 0 { return; }
|
||||
@@ -235,7 +235,7 @@ impl GPU for Gles3Gpu {
|
||||
destroy_texture :: (self: *Gles3Gpu, tex: TextureHandle) {
|
||||
inline if OS != .android { return; }
|
||||
if tex == 0 { return; }
|
||||
h64 : s64 = xx tex;
|
||||
h64 : i64 = xx tex;
|
||||
if h64 > self.textures.len { return; }
|
||||
t := self.textures.items[tex - 1].tex;
|
||||
if t == 0 { return; }
|
||||
@@ -248,7 +248,7 @@ impl GPU for Gles3Gpu {
|
||||
set_shader :: (self: *Gles3Gpu, handle: ShaderHandle) {
|
||||
inline if OS != .android { return; }
|
||||
if handle == 0 { return; }
|
||||
h64 : s64 = xx handle;
|
||||
h64 : i64 = xx handle;
|
||||
if h64 > self.shaders.len { return; }
|
||||
prog := self.shaders.items[handle - 1].program;
|
||||
if prog == 0 { return; }
|
||||
@@ -280,14 +280,14 @@ impl GPU for Gles3Gpu {
|
||||
inline if OS != .android { return; }
|
||||
if slot != 0 { return; } // renderer only uses unit 0
|
||||
if handle == 0 { return; }
|
||||
h64 : s64 = xx handle;
|
||||
h64 : i64 = xx handle;
|
||||
if h64 > self.textures.len { return; }
|
||||
t := self.textures.items[handle - 1].tex;
|
||||
if t == 0 { return; }
|
||||
glActiveTexture(GL_TEXTURE0);
|
||||
glBindTexture(GL_TEXTURE_2D, t);
|
||||
if self.current_shader != 0 {
|
||||
cs64 : s64 = xx self.current_shader;
|
||||
cs64 : i64 = xx self.current_shader;
|
||||
if cs64 <= self.shaders.len {
|
||||
loc := self.shaders.items[self.current_shader - 1].tex_loc;
|
||||
if loc >= 0 { glUniform1i(loc, 0); }
|
||||
@@ -298,19 +298,19 @@ impl GPU for Gles3Gpu {
|
||||
// For slot 1 + 64 bytes the renderer is uploading the 4x4 projection
|
||||
// matrix into `uniform mat4 uProj`. Look up via the current shader's
|
||||
// cached uniform location.
|
||||
set_vertex_constants :: (self: *Gles3Gpu, slot: u32, data: *void, size_bytes: s64) {
|
||||
set_vertex_constants :: (self: *Gles3Gpu, slot: u32, data: *void, size_bytes: i64) {
|
||||
inline if OS != .android { return; }
|
||||
if slot != 1 { return; }
|
||||
if size_bytes != 64 { return; }
|
||||
if self.current_shader == 0 { return; }
|
||||
cs64 : s64 = xx self.current_shader;
|
||||
cs64 : i64 = xx self.current_shader;
|
||||
if cs64 > self.shaders.len { return; }
|
||||
loc := self.shaders.items[self.current_shader - 1].proj_loc;
|
||||
if loc < 0 { return; }
|
||||
glUniformMatrix4fv(loc, 1, 0, xx data);
|
||||
}
|
||||
|
||||
set_scissor :: (self: *Gles3Gpu, x: s32, y: s32, w: s32, h: s32) {
|
||||
set_scissor :: (self: *Gles3Gpu, x: i32, y: i32, w: i32, h: i32) {
|
||||
inline if OS != .android { return; }
|
||||
glEnable(GL_SCISSOR_TEST);
|
||||
glScissor(x, self.pixel_h - (y + h), w, h);
|
||||
@@ -321,7 +321,7 @@ impl GPU for Gles3Gpu {
|
||||
glDisable(GL_SCISSOR_TEST);
|
||||
}
|
||||
|
||||
draw_triangles :: (self: *Gles3Gpu, vertex_offset: s32, vertex_count: s32) {
|
||||
draw_triangles :: (self: *Gles3Gpu, vertex_offset: i32, vertex_count: i32) {
|
||||
inline if OS != .android { return; }
|
||||
if vertex_count <= 0 { return; }
|
||||
glDrawArrays(GL_TRIANGLES, vertex_offset, vertex_count);
|
||||
@@ -331,7 +331,7 @@ impl GPU for Gles3Gpu {
|
||||
gles3_lookup_buffer :: (self: *Gles3Gpu, handle: u32) -> u32 {
|
||||
inline if OS != .android { return 0; }
|
||||
if handle == 0 { return 0; }
|
||||
h64 : s64 = xx handle;
|
||||
h64 : i64 = xx handle;
|
||||
if h64 > self.buffers.len { return 0; }
|
||||
self.buffers.items[handle - 1]
|
||||
}
|
||||
|
||||
@@ -75,8 +75,8 @@ MetalGPU :: struct {
|
||||
device: *void = null; // id<MTLDevice>
|
||||
queue: *void = null; // id<MTLCommandQueue>
|
||||
layer: *void = null; // CAMetalLayer*
|
||||
pixel_w: s32 = 0;
|
||||
pixel_h: s32 = 0;
|
||||
pixel_w: i32 = 0;
|
||||
pixel_h: i32 = 0;
|
||||
|
||||
// Per-frame transients. Live only between begin_frame and end_frame.
|
||||
drawable: *void = null; // id<CAMetalDrawable>
|
||||
@@ -100,7 +100,7 @@ impl GPU for MetalGPU {
|
||||
// UIKit hands us a layer), then re-call `init(layer, w, h)` once the
|
||||
// CAMetalLayer is available. The second call only updates the layer
|
||||
// ref + dims; device/queue are preserved.
|
||||
init :: (self: *MetalGPU, target: *void, pixel_w: s32, pixel_h: s32) -> bool {
|
||||
init :: (self: *MetalGPU, target: *void, pixel_w: i32, pixel_h: i32) -> bool {
|
||||
inline if OS != .ios { return false; }
|
||||
if target != null {
|
||||
self.layer = target;
|
||||
@@ -116,7 +116,7 @@ impl GPU for MetalGPU {
|
||||
// would send `release` to queue + device.
|
||||
}
|
||||
|
||||
resize :: (self: *MetalGPU, pixel_w: s32, pixel_h: s32) {
|
||||
resize :: (self: *MetalGPU, pixel_w: i32, pixel_h: i32) {
|
||||
self.pixel_w = pixel_w;
|
||||
self.pixel_h = pixel_h;
|
||||
inline if OS == .ios {
|
||||
@@ -145,29 +145,29 @@ impl GPU for MetalGPU {
|
||||
metal_create_shader_ios(self, vsrc)
|
||||
}
|
||||
|
||||
create_buffer :: (self: *MetalGPU, size_bytes: s64) -> BufferHandle {
|
||||
create_buffer :: (self: *MetalGPU, size_bytes: i64) -> BufferHandle {
|
||||
inline if OS != .ios { return 0; }
|
||||
metal_create_buffer_ios(self, size_bytes)
|
||||
}
|
||||
|
||||
update_buffer :: (self: *MetalGPU, buf: BufferHandle, data: *void, size_bytes: s64) {
|
||||
update_buffer :: (self: *MetalGPU, buf: BufferHandle, data: *void, size_bytes: i64) {
|
||||
inline if OS == .ios {
|
||||
metal_update_buffer_ios(self, buf, data, size_bytes);
|
||||
}
|
||||
}
|
||||
|
||||
update_buffer_at :: (self: *MetalGPU, buf: BufferHandle, data: *void, size_bytes: s64, byte_offset: s64) {
|
||||
update_buffer_at :: (self: *MetalGPU, buf: BufferHandle, data: *void, size_bytes: i64, byte_offset: i64) {
|
||||
inline if OS == .ios {
|
||||
metal_update_buffer_at_ios(self, buf, data, size_bytes, byte_offset);
|
||||
}
|
||||
}
|
||||
|
||||
create_texture :: (self: *MetalGPU, w: s32, h: s32, format: TextureFormat, pixels: *void) -> TextureHandle {
|
||||
create_texture :: (self: *MetalGPU, w: i32, h: i32, format: TextureFormat, pixels: *void) -> TextureHandle {
|
||||
inline if OS != .ios { return 0; }
|
||||
metal_create_texture_ios(self, w, h, format, pixels)
|
||||
}
|
||||
|
||||
update_texture_region :: (self: *MetalGPU, tex: TextureHandle, x: s32, y: s32, w: s32, h: s32, pixels: *void) {
|
||||
update_texture_region :: (self: *MetalGPU, tex: TextureHandle, x: i32, y: i32, w: i32, h: i32, pixels: *void) {
|
||||
inline if OS == .ios {
|
||||
metal_update_texture_region_ios(self, tex, x, y, w, h, pixels);
|
||||
}
|
||||
@@ -213,13 +213,13 @@ impl GPU for MetalGPU {
|
||||
}
|
||||
}
|
||||
|
||||
set_vertex_constants :: (self: *MetalGPU, slot: u32, data: *void, size_bytes: s64) {
|
||||
set_vertex_constants :: (self: *MetalGPU, slot: u32, data: *void, size_bytes: i64) {
|
||||
inline if OS == .ios {
|
||||
metal_set_vertex_constants_ios(self, slot, data, size_bytes);
|
||||
}
|
||||
}
|
||||
|
||||
set_scissor :: (self: *MetalGPU, x: s32, y: s32, w: s32, h: s32) {
|
||||
set_scissor :: (self: *MetalGPU, x: i32, y: i32, w: i32, h: i32) {
|
||||
inline if OS == .ios {
|
||||
metal_set_scissor_ios(self, x, y, w, h);
|
||||
}
|
||||
@@ -231,7 +231,7 @@ impl GPU for MetalGPU {
|
||||
}
|
||||
}
|
||||
|
||||
draw_triangles :: (self: *MetalGPU, vertex_offset: s32, vertex_count: s32) {
|
||||
draw_triangles :: (self: *MetalGPU, vertex_offset: i32, vertex_count: i32) {
|
||||
inline if OS == .ios {
|
||||
metal_draw_triangles_ios(self, vertex_offset, vertex_count);
|
||||
}
|
||||
@@ -446,7 +446,7 @@ metal_create_shader_ios :: (self: *MetalGPU, src: string) -> u32 {
|
||||
// Shared-memory MTLBuffer (CPU + GPU visible on UMA hardware). `contents`
|
||||
// returns the mapped pointer for memcpy uploads.
|
||||
|
||||
metal_create_buffer_ios :: (self: *MetalGPU, size_bytes: s64) -> u32 {
|
||||
metal_create_buffer_ios :: (self: *MetalGPU, size_bytes: i64) -> u32 {
|
||||
inline if OS != .ios { return 0; }
|
||||
if self.device == null { return 0; }
|
||||
if size_bytes <= 0 { return 0; }
|
||||
@@ -462,7 +462,7 @@ metal_create_buffer_ios :: (self: *MetalGPU, size_bytes: s64) -> u32 {
|
||||
xx self.buffers.len
|
||||
}
|
||||
|
||||
metal_update_buffer_ios :: (self: *MetalGPU, handle: u32, data: *void, size_bytes: s64) {
|
||||
metal_update_buffer_ios :: (self: *MetalGPU, handle: u32, data: *void, size_bytes: i64) {
|
||||
inline if OS != .ios { return; }
|
||||
buf := metal_lookup_buffer(self, handle);
|
||||
if buf == null { return; }
|
||||
@@ -475,7 +475,7 @@ metal_update_buffer_ios :: (self: *MetalGPU, handle: u32, data: *void, size_byte
|
||||
memcpy(dst, data, size_bytes);
|
||||
}
|
||||
|
||||
metal_update_buffer_at_ios :: (self: *MetalGPU, handle: u32, data: *void, size_bytes: s64, byte_offset: s64) {
|
||||
metal_update_buffer_at_ios :: (self: *MetalGPU, handle: u32, data: *void, size_bytes: i64, byte_offset: i64) {
|
||||
inline if OS != .ios { return; }
|
||||
buf := metal_lookup_buffer(self, handle);
|
||||
if buf == null { return; }
|
||||
@@ -489,7 +489,7 @@ metal_update_buffer_at_ios :: (self: *MetalGPU, handle: u32, data: *void, size_b
|
||||
// Add byte_offset via integer arithmetic — `@dst[i]` on `[*]u8`
|
||||
// already does this, but we keep this form explicit so a future
|
||||
// pointer-arithmetic regression here can't hide.
|
||||
base_i : s64 = xx base;
|
||||
base_i : i64 = xx base;
|
||||
dst_at : *void = xx (base_i + byte_offset);
|
||||
memcpy(dst_at, data, size_bytes);
|
||||
}
|
||||
@@ -497,7 +497,7 @@ metal_update_buffer_at_ios :: (self: *MetalGPU, handle: u32, data: *void, size_b
|
||||
metal_lookup_buffer :: (self: *MetalGPU, handle: u32) -> *void {
|
||||
inline if OS != .ios { return null; }
|
||||
if handle == 0 { return null; }
|
||||
h64 : s64 = xx handle;
|
||||
h64 : i64 = xx handle;
|
||||
if h64 > self.buffers.len { return null; }
|
||||
self.buffers.items[handle - 1]
|
||||
}
|
||||
@@ -505,14 +505,14 @@ metal_lookup_buffer :: (self: *MetalGPU, handle: u32) -> *void {
|
||||
metal_lookup_shader :: (self: *MetalGPU, handle: u32) -> *void {
|
||||
inline if OS != .ios { return null; }
|
||||
if handle == 0 { return null; }
|
||||
h64 : s64 = xx handle;
|
||||
h64 : i64 = xx handle;
|
||||
if h64 > self.shaders.len { return null; }
|
||||
self.shaders.items[handle - 1]
|
||||
}
|
||||
|
||||
// ── Textures ─────────────────────────────────────────────────────────────
|
||||
|
||||
metal_create_texture_ios :: (self: *MetalGPU, w: s32, h: s32, format: TextureFormat, pixels: *void) -> u32 {
|
||||
metal_create_texture_ios :: (self: *MetalGPU, w: i32, h: i32, format: TextureFormat, pixels: *void) -> u32 {
|
||||
inline if OS != .ios { return 0; }
|
||||
if self.device == null { return 0; }
|
||||
if w <= 0 { return 0; }
|
||||
@@ -557,10 +557,10 @@ metal_create_texture_ios :: (self: *MetalGPU, w: s32, h: s32, format: TextureFor
|
||||
xx self.textures.len
|
||||
}
|
||||
|
||||
metal_update_texture_region_ios :: (self: *MetalGPU, handle: u32, x: s32, y: s32, w: s32, h: s32, pixels: *void) {
|
||||
metal_update_texture_region_ios :: (self: *MetalGPU, handle: u32, x: i32, y: i32, w: i32, h: i32, pixels: *void) {
|
||||
inline if OS != .ios { return; }
|
||||
if handle == 0 { return; }
|
||||
h64 : s64 = xx handle;
|
||||
h64 : i64 = xx handle;
|
||||
if h64 > self.textures.len { return; }
|
||||
slot := self.textures.items[handle - 1];
|
||||
if slot.tex == null { return; }
|
||||
@@ -592,7 +592,7 @@ metal_update_texture_region_ios :: (self: *MetalGPU, handle: u32, x: s32, y: s32
|
||||
metal_destroy_shader_ios :: (self: *MetalGPU, handle: u32) {
|
||||
inline if OS != .ios { return; }
|
||||
if handle == 0 { return; }
|
||||
h64 : s64 = xx handle;
|
||||
h64 : i64 = xx handle;
|
||||
if h64 > self.shaders.len { return; }
|
||||
obj := self.shaders.items[handle - 1];
|
||||
if obj == null { return; }
|
||||
@@ -604,7 +604,7 @@ metal_destroy_shader_ios :: (self: *MetalGPU, handle: u32) {
|
||||
metal_destroy_buffer_ios :: (self: *MetalGPU, handle: u32) {
|
||||
inline if OS != .ios { return; }
|
||||
if handle == 0 { return; }
|
||||
h64 : s64 = xx handle;
|
||||
h64 : i64 = xx handle;
|
||||
if h64 > self.buffers.len { return; }
|
||||
obj := self.buffers.items[handle - 1];
|
||||
if obj == null { return; }
|
||||
@@ -616,7 +616,7 @@ metal_destroy_buffer_ios :: (self: *MetalGPU, handle: u32) {
|
||||
metal_destroy_texture_ios :: (self: *MetalGPU, handle: u32) {
|
||||
inline if OS != .ios { return; }
|
||||
if handle == 0 { return; }
|
||||
h64 : s64 = xx handle;
|
||||
h64 : i64 = xx handle;
|
||||
if h64 > self.textures.len { return; }
|
||||
obj := self.textures.items[handle - 1].tex;
|
||||
if obj == null { return; }
|
||||
@@ -651,7 +651,7 @@ metal_set_texture_ios :: (self: *MetalGPU, slot: u32, h: u32) {
|
||||
inline if OS != .ios { return; }
|
||||
if self.encoder == null { return; }
|
||||
if h == 0 { return; }
|
||||
h64 : s64 = xx h;
|
||||
h64 : i64 = xx h;
|
||||
if h64 > self.textures.len { return; }
|
||||
tex := self.textures.items[h - 1].tex;
|
||||
if tex == null { return; }
|
||||
@@ -660,7 +660,7 @@ metal_set_texture_ios :: (self: *MetalGPU, slot: u32, h: u32) {
|
||||
msg(self.encoder, sel_registerName("setFragmentTexture:atIndex:".ptr), tex, xx slot);
|
||||
}
|
||||
|
||||
metal_set_vertex_constants_ios :: (self: *MetalGPU, slot: u32, data: *void, size_bytes: s64) {
|
||||
metal_set_vertex_constants_ios :: (self: *MetalGPU, slot: u32, data: *void, size_bytes: i64) {
|
||||
inline if OS != .ios { return; }
|
||||
if self.encoder == null { return; }
|
||||
if data == null { return; }
|
||||
@@ -671,7 +671,7 @@ metal_set_vertex_constants_ios :: (self: *MetalGPU, slot: u32, data: *void, size
|
||||
data, xx size_bytes, xx slot);
|
||||
}
|
||||
|
||||
metal_set_scissor_ios :: (self: *MetalGPU, x: s32, y: s32, w: s32, h: s32) {
|
||||
metal_set_scissor_ios :: (self: *MetalGPU, x: i32, y: i32, w: i32, h: i32) {
|
||||
inline if OS != .ios { return; }
|
||||
if self.encoder == null { return; }
|
||||
rect : MTLScissorRect = .{ x = xx x, y = xx y, width = xx w, height = xx h };
|
||||
@@ -690,7 +690,7 @@ metal_disable_scissor_ios :: (self: *MetalGPU) {
|
||||
msg(self.encoder, sel_registerName("setScissorRect:".ptr), rect);
|
||||
}
|
||||
|
||||
metal_draw_triangles_ios :: (self: *MetalGPU, vertex_offset: s32, vertex_count: s32) {
|
||||
metal_draw_triangles_ios :: (self: *MetalGPU, vertex_offset: i32, vertex_count: i32) {
|
||||
inline if OS != .ios { return; }
|
||||
if self.encoder == null { return; }
|
||||
if vertex_count <= 0 { return; }
|
||||
|
||||
Reference in New Issue
Block a user