Merge remote-tracking branch 'offical/master'

This commit is contained in:
ed
2025-01-11 22:06:08 -05:00
88 changed files with 2043 additions and 546 deletions
+11 -1
View File
@@ -1571,7 +1571,7 @@ VIEW_INSTANCING_DESC :: struct {
Flags: VIEW_INSTANCING_FLAGS,
}
SHADER_COMPONENT_MAPPING :: enum i32 {
SHADER_COMPONENT_MAPPING :: enum u32 {
FROM_MEMORY_COMPONENT_0 = 0,
FROM_MEMORY_COMPONENT_1 = 1,
FROM_MEMORY_COMPONENT_2 = 2,
@@ -1579,6 +1579,16 @@ SHADER_COMPONENT_MAPPING :: enum i32 {
FORCE_VALUE_0 = 4,
FORCE_VALUE_1 = 5,
}
ENCODE_SHADER_4_COMPONENT_MAPPING :: #force_inline proc "contextless" (Src0, Src1, Src2, Src3: u32) -> u32 {
return (Src0 & SHADER_COMPONENT_MAPPING_MASK) |
((Src1 & SHADER_COMPONENT_MAPPING_MASK) << SHADER_COMPONENT_MAPPING_SHIFT) |
((Src2 & SHADER_COMPONENT_MAPPING_MASK) << (SHADER_COMPONENT_MAPPING_SHIFT * 2)) |
((Src3 & SHADER_COMPONENT_MAPPING_MASK) << (SHADER_COMPONENT_MAPPING_SHIFT * 3)) |
SHADER_COMPONENT_MAPPING_ALWAYS_SET_BIT_AVOIDING_ZEROMEM_MISTAKES
}
DECODE_SHADER_4_COMPONENT_MAPPING :: #force_inline proc "contextless" (ComponentToExtract, Mapping: u32) -> u32 {
return Mapping >> (SHADER_COMPONENT_MAPPING_SHIFT * ComponentToExtract) & SHADER_COMPONENT_MAPPING_MASK
}
BUFFER_SRV_FLAGS :: distinct bit_set[BUFFER_SRV_FLAG; u32]
BUFFER_SRV_FLAG :: enum u32 {
+6
View File
@@ -498,6 +498,12 @@ WHQL_DRAW_VERTEX_COUNT_2_TO_EXP :: 25
SHADER_COMPONENT_MAPPING_MASK :: 0x7
SHADER_COMPONENT_MAPPING_SHIFT :: 3
SHADER_COMPONENT_MAPPING_ALWAYS_SET_BIT_AVOIDING_ZEROMEM_MISTAKES :: 1 << (SHADER_COMPONENT_MAPPING_SHIFT * 4)
DEFAULT_SHADER_4_COMPONENT_MAPPING :: (0 & SHADER_COMPONENT_MAPPING_MASK) |
((1 & SHADER_COMPONENT_MAPPING_MASK) << SHADER_COMPONENT_MAPPING_SHIFT) |
((2 & SHADER_COMPONENT_MAPPING_MASK) << (SHADER_COMPONENT_MAPPING_SHIFT * 2)) |
((3 & SHADER_COMPONENT_MAPPING_MASK) << (SHADER_COMPONENT_MAPPING_SHIFT * 3)) |
SHADER_COMPONENT_MAPPING_ALWAYS_SET_BIT_AVOIDING_ZEROMEM_MISTAKES
FILTER_REDUCTION_TYPE_MASK :: 0x3
FILTER_REDUCTION_TYPE_SHIFT :: 7
+2 -6
View File
@@ -18,12 +18,8 @@ when LIB != "" {
}
}
when ODIN_ARCH == .wasm32 || ODIN_ARCH == .wasm64p32 {
foreign import stbi "../lib/stb_image_wasm.o"
} else when LIB != "" {
foreign import stbi { LIB }
} else {
foreign import stbi "system:stb_image"
foreign import stbi {
LIB when LIB != "" else "system:stb_image",
}
NO_STDIO :: ODIN_ARCH == .wasm32 || ODIN_ARCH == .wasm64p32
+2 -6
View File
@@ -18,12 +18,8 @@ when RESIZE_LIB != "" {
}
}
when ODIN_ARCH == .wasm32 || ODIN_ARCH == .wasm64p32 {
foreign import lib "../lib/stb_image_resize_wasm.o"
} else when RESIZE_LIB != "" {
foreign import lib { RESIZE_LIB }
} else {
foreign import lib "system:stb_image_resize"
foreign import lib {
RESIZE_LIB when RESIZE_LIB != "" else "system:stb_image_resize",
}
//////////////////////////////////////////////////////////////////////////////
+2 -6
View File
@@ -18,12 +18,8 @@ when WRITE_LIB != "" {
}
}
when ODIN_ARCH == .wasm32 || ODIN_ARCH == .wasm64p32 {
foreign import stbiw "../lib/stb_image_write_wasm.o"
} else when WRITE_LIB != "" {
foreign import stbiw { WRITE_LIB }
} else {
foreign import stbiw "system:stb_image_write"
foreign import stbiw {
WRITE_LIB when WRITE_LIB != "" else "system:stb_image_write",
}
write_func :: proc "c" (ctx: rawptr, data: rawptr, size: c.int)
+12 -12
View File
@@ -1181,7 +1181,7 @@ class WebGPUInterface {
*/
wgpuBufferSetLabel: (bufferIdx, labelPtr) => {
const buffer = this.buffers.get(bufferIdx);
buffer.buffer.label = this.mem.loadCstring(labelPtr);
buffer.buffer.label = this.mem.loadCstringDirect(labelPtr);
},
/**
@@ -1370,7 +1370,7 @@ class WebGPUInterface {
*/
wgpuCommandEncoderInsertDebugMarker: (commandEncoderIdx, markerLabelPtr) => {
const commandEncoder = this.commandEncoders.get(commandEncoderIdx);
commandEncoder.insertDebugMarker(this.mem.loadCstring(markerLabelPtr));
commandEncoder.insertDebugMarker(this.mem.loadCstringDirect(markerLabelPtr));
},
/**
@@ -1387,7 +1387,7 @@ class WebGPUInterface {
*/
wgpuCommandEncoderPushDebugGroup: (commandEncoderIdx, groupLabelPtr) => {
const commandEncoder = this.commandEncoders.get(commandEncoderIdx);
commandEncoder.pushDebugGroup(this.mem.loadCstring(groupLabelPtr));
commandEncoder.pushDebugGroup(this.mem.loadCstringDirect(groupLabelPtr));
},
/**
@@ -1459,7 +1459,7 @@ class WebGPUInterface {
*/
wgpuComputePassEncoderInsertDebugMarker: (computePassEncoderIdx, markerLabelPtr) => {
const computePassEncoder = this.computePassEncoders.get(computePassEncoderIdx);
computePassEncoder.insertDebugMarker(this.mem.loadCstring(markerLabelPtr));
computePassEncoder.insertDebugMarker(this.mem.loadCstringDirect(markerLabelPtr));
},
/**
@@ -1476,7 +1476,7 @@ class WebGPUInterface {
*/
wgpuComputePassEncoderPushDebugGroup: (computePassEncoderIdx, groupLabelPtr) => {
const computePassEncoder = this.computePassEncoders.get(computePassEncoderIdx);
computePassEncoder.pushDebugGroup(this.mem.loadCstring(groupLabelPtr));
computePassEncoder.pushDebugGroup(this.mem.loadCstringDirect(groupLabelPtr));
},
/**
@@ -2216,7 +2216,7 @@ class WebGPUInterface {
wgpuRenderBundleEncoderInsertDebugMarker: (renderBundleEncoderIdx, markerLabelPtr) => {
const renderBundleEncoder = this.renderBundleEncoders.get(renderBundleEncoderIdx);
this.assert(markerLabelPtr != 0);
const markerLabel = this.mem.loadCstring(markerLabelPtr);
const markerLabel = this.mem.loadCstringDirect(markerLabelPtr);
renderBundleEncoder.insertDebugMarker(markerLabel);
},
@@ -2235,7 +2235,7 @@ class WebGPUInterface {
wgpuRenderBundleEncoderPushDebugGroup: (renderBundleEncoderIdx, groupLabelPtr) => {
const renderBundleEncoder = this.renderBundleEncoders.get(renderBundleEncoderIdx);
this.assert(groupLabelPtr!= 0);
const groupLabel = this.mem.loadCstring(groupLabelPtr);
const groupLabel = this.mem.loadCstringDirect(groupLabelPtr);
renderBundleEncoder.pushDebugGroup(groupLabel);
},
@@ -2407,7 +2407,7 @@ class WebGPUInterface {
*/
wgpuRenderPassEncoderInsertDebugMarker: (renderPassEncoderIdx, markerLabelPtr) => {
const renderPassEncoder = this.renderPassEncoders.get(renderPassEncoderIdx);
const markerLabel = this.mem.loadCstring(markerLabelPtr);
const markerLabel = this.mem.loadCstringDirect(markerLabelPtr);
renderPassEncoder.insertDebugMarker(markerLabel);
},
@@ -2425,7 +2425,7 @@ class WebGPUInterface {
*/
wgpuRenderPassEncoderPushDebugGroup: (renderPassEncoderIdx, groupLabelPtr) => {
const renderPassEncoder = this.renderPassEncoders.get(renderPassEncoderIdx);
const groupLabel = this.mem.loadCstring(groupLabelPtr);
const groupLabel = this.mem.loadCstringDirect(groupLabelPtr);
renderPassEncoder.pushDebugGroup(groupLabel);
},
@@ -2881,11 +2881,11 @@ class WebGPUObjectManager {
}
/**
* @param {number} idx
* @param {?number} idx
* @returns {T}
*/
get(idx) {
return this.objects[idx-1].object;
return this.objects[idx-1]?.object;
}
/** @param {number} idx */
@@ -2908,7 +2908,7 @@ class WebGPUObjectManager {
if (withLabelSetter) {
inter[`wgpu${this.name}SetLabel`] = (idx, labelPtr) => {
const obj = this.get(idx);
obj.label = this.mem.loadCstring(labelPtr);
obj.label = this.mem.loadCstringDirect(labelPtr);
};
}
return inter;