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