improving fragment outputs management
Build / build (push) Successful in 2m15s
Test / build_and_test (push) Successful in 1m31s

This commit is contained in:
2026-05-30 01:45:15 +02:00
parent 0ab6581fe9
commit 13d53abbdf
4 changed files with 38 additions and 24 deletions
+17 -14
View File
@@ -157,19 +157,22 @@ inline fn run(data: RunData) !void {
return;
};
try render_target.writeFloat4(
.{
.x = pixel_x,
.y = pixel_y,
.z = 0, // FIXME
},
.{
.aspect_mask = render_target_view.subresource_range.aspect_mask,
.mip_level = render_target_view.subresource_range.base_mip_level,
.array_layer = render_target_view.subresource_range.base_array_layer,
},
render_target_view.format,
pixel,
);
_ = pixel;
_ = render_target;
//try render_target.writeFloat4(
// .{
// .x = pixel_x,
// .y = pixel_y,
// .z = 0, // FIXME
// },
// .{
// .aspect_mask = render_target_view.subresource_range.aspect_mask,
// .mip_level = render_target_view.subresource_range.base_mip_level,
// .array_layer = render_target_view.subresource_range.base_array_layer,
// },
// render_target_view.format,
// pixel,
//);
}
}
+11 -4
View File
@@ -162,7 +162,7 @@ inline fn run(data: RunData) !void {
continue;
}
const pixel = fragment.shaderInvocation(
const outputs = fragment.shaderInvocation(
data.allocator,
data.draw_call,
data.batch_id,
@@ -175,7 +175,6 @@ inline fn run(data: RunData) !void {
std.debug.dumpErrorReturnTrace(trace);
}
}
return;
};
@@ -192,9 +191,17 @@ inline fn run(data: RunData) !void {
if (z >= depth_value[0])
continue;
blitter.writeFloat4(zm.f32x4s(z), depth.base[depth_offset..], depth.format);
blitter.writeFloat4(pixel, data.color_attachment_access.base[color_offset..], data.color_attachment_access.format);
// Doubled line to stay inside the critical section
if (base.format.isUnnormalizedInteger(data.color_attachment_access.format))
blitter.writeInt4(std.mem.bytesToValue(@Vector(4, u32), &outputs[0]), data.color_attachment_access.base[color_offset..], data.color_attachment_access.format)
else
blitter.writeFloat4(std.mem.bytesToValue(@Vector(4, f32), &outputs[0]), data.color_attachment_access.base[color_offset..], data.color_attachment_access.format);
} else {
blitter.writeFloat4(pixel, data.color_attachment_access.base[color_offset..], data.color_attachment_access.format);
if (base.format.isUnnormalizedInteger(data.color_attachment_access.format))
blitter.writeInt4(std.mem.bytesToValue(@Vector(4, u32), &outputs[0]), data.color_attachment_access.base[color_offset..], data.color_attachment_access.format)
else
blitter.writeFloat4(std.mem.bytesToValue(@Vector(4, f32), &outputs[0]), data.color_attachment_access.base[color_offset..], data.color_attachment_access.format);
}
}
}