fix(vulkan): label readback image formats
This commit is contained in:
@@ -242,6 +242,7 @@ impl VulkanSmokeRenderer {
|
||||
enabled_extension_count: 0,
|
||||
swapchain_extent: (0, 0),
|
||||
swapchain_image_count: 0,
|
||||
swapchain_image_format: 0,
|
||||
swapchain_image_usage: 0,
|
||||
readback_copy_count: 0,
|
||||
readback_byte_count: 0,
|
||||
@@ -273,6 +274,7 @@ impl VulkanSmokeRenderer {
|
||||
.unwrap_or(u32::MAX),
|
||||
swapchain_extent: swapchain_ref.report.plan.extent,
|
||||
swapchain_image_count: swapchain_ref.report.image_count,
|
||||
swapchain_image_format: swapchain_ref.report.plan.format.format,
|
||||
swapchain_image_usage: swapchain_ref.report.plan.image_usage,
|
||||
readback_copy_count: 0,
|
||||
readback_byte_count: 0,
|
||||
@@ -589,6 +591,7 @@ impl VulkanSmokeRenderer {
|
||||
self.frame_sync = frame_sync;
|
||||
self.report.swapchain_extent = swapchain_extent;
|
||||
self.report.swapchain_image_count = swapchain_image_count;
|
||||
self.report.swapchain_image_format = self.swapchain_ref()?.report.plan.format.format;
|
||||
self.report.swapchain_image_usage = swapchain_image_usage;
|
||||
self.swapchain_resources = Some(resources);
|
||||
Ok(())
|
||||
|
||||
@@ -457,6 +457,8 @@ pub struct VulkanSmokeRendererReport {
|
||||
pub swapchain_extent: (u32, u32),
|
||||
/// Current swapchain image count.
|
||||
pub swapchain_image_count: u32,
|
||||
/// Current swapchain image format as a raw Vulkan enum value.
|
||||
pub swapchain_image_format: i32,
|
||||
/// Current swapchain image-usage flags as raw Vulkan bits.
|
||||
pub swapchain_image_usage: u32,
|
||||
/// Number of submitted swapchain image-to-buffer copy commands.
|
||||
|
||||
@@ -639,7 +639,7 @@ impl SmokeApp {
|
||||
let path = self
|
||||
.options
|
||||
.out
|
||||
.with_file_name(format!("{stem}.readback-b8g8r8a8.raw"));
|
||||
.with_file_name(format!("{stem}.readback-vkformat-{}.raw", artifact.format));
|
||||
std::fs::write(&path, &artifact.bytes).map_err(|err| format!("{}: {err}", path.display()))
|
||||
}
|
||||
|
||||
@@ -795,6 +795,9 @@ impl SmokeApp {
|
||||
vulkan_swapchain_image_count: renderer
|
||||
.as_ref()
|
||||
.map_or(0, |snapshot| snapshot.report.swapchain_image_count),
|
||||
vulkan_swapchain_image_format: renderer
|
||||
.as_ref()
|
||||
.map_or(0, |snapshot| snapshot.report.swapchain_image_format),
|
||||
vulkan_swapchain_image_usage: renderer
|
||||
.as_ref()
|
||||
.map_or(0, |snapshot| snapshot.report.swapchain_image_usage),
|
||||
@@ -1020,6 +1023,7 @@ fn render_timeout_failure_report(
|
||||
vulkan_swapchain_width: 0,
|
||||
vulkan_swapchain_height: 0,
|
||||
vulkan_swapchain_image_count: 0,
|
||||
vulkan_swapchain_image_format: 0,
|
||||
vulkan_swapchain_image_usage: 0,
|
||||
vulkan_readback_copy_count: 0,
|
||||
vulkan_readback_byte_count: 0,
|
||||
@@ -1244,6 +1248,7 @@ struct SmokeReport<'a> {
|
||||
vulkan_swapchain_width: u32,
|
||||
vulkan_swapchain_height: u32,
|
||||
vulkan_swapchain_image_count: u32,
|
||||
vulkan_swapchain_image_format: i32,
|
||||
vulkan_swapchain_image_usage: u32,
|
||||
vulkan_readback_copy_count: u64,
|
||||
vulkan_readback_byte_count: u64,
|
||||
@@ -1751,6 +1756,7 @@ mod tests {
|
||||
vulkan_swapchain_width: 960,
|
||||
vulkan_swapchain_height: 540,
|
||||
vulkan_swapchain_image_count: 3,
|
||||
vulkan_swapchain_image_format: 50,
|
||||
vulkan_swapchain_image_usage: 17,
|
||||
vulkan_readback_copy_count: 300,
|
||||
vulkan_readback_byte_count: 4_147_200,
|
||||
|
||||
@@ -895,10 +895,10 @@ static viewer. Он ещё не захватывает original DirectDraw frame
|
||||
fixed original camera и не сравнивает два изображения, поэтому pixel-parity
|
||||
acceptance остаётся blocked.
|
||||
|
||||
Smoke также сохраняет raw artifact рядом с JSON: `<report-stem>.readback-b8g8r8a8.raw`.
|
||||
Smoke также сохраняет raw artifact рядом с JSON: `<report-stem>.readback-vkformat-<raw>.raw`.
|
||||
Это concatenated current-swapchain images in Vulkan order, каждый с dimensions
|
||||
из JSON и четырьмя bytes per pixel; format намеренно указан в имени файла,
|
||||
потому что bytes не перекодируются. GOG proof produced a 4,147,200-byte file
|
||||
потому что bytes не перекодируются; JSON содержит actual raw enum. GOG selected `50` and produced a 4,147,200-byte file
|
||||
for two 960x540 images. Артефакт остаётся локальным output и не попадает в Git.
|
||||
|
||||
`Land.msh` использует отдельный geometry-only bridge: validated `TerrainFace28`
|
||||
|
||||
Reference in New Issue
Block a user