tests: Use buffers format when writing PPM files
Also change tests to use BGRA by default
Also change WritePPM to use BGRA format
diff --git a/tests/xglrenderframework.cpp b/tests/xglrenderframework.cpp
index b7b3742..22d3216 100644
--- a/tests/xglrenderframework.cpp
+++ b/tests/xglrenderframework.cpp
@@ -38,7 +38,7 @@
{
m_renderTargetCount = 1;
- m_render_target_fmt = XGL_FMT_R8G8B8A8_UNORM;
+ m_render_target_fmt = XGL_FMT_B8G8R8A8_UNORM;
m_depthStencilBinding.view = XGL_NULL_HANDLE;
}
@@ -83,7 +83,7 @@
{
XGL_RESULT err;
- m_render_target_fmt = XGL_FMT_R8G8B8A8_UNORM;
+ m_render_target_fmt = XGL_FMT_B8G8R8A8_UNORM;
// create a raster state (solid, back-face culling)
XGL_DYNAMIC_RS_STATE_CREATE_INFO raster = {};
@@ -383,7 +383,7 @@
XGL_STRUCTURE_TYPE_COLOR_ATTACHMENT_VIEW_CREATE_INFO,
XGL_NULL_HANDLE,
obj(),
- XGL_FMT_R8G8B8A8_UNORM,
+ XGL_FMT_B8G8R8A8_UNORM,
0,
0,
1
@@ -805,7 +805,7 @@
XGL_PIPELINE_CB_ATTACHMENT_STATE att = {};
att.blendEnable = XGL_FALSE;
- att.format = XGL_FMT_R8G8B8A8_UNORM;
+ att.format = XGL_FMT_B8G8R8A8_UNORM;
att.channelWriteMask = 0xf;
AddColorAttachment(0, &att);
diff --git a/tests/xgltestbinding.h b/tests/xgltestbinding.h
index a47b44a..676fcab 100644
--- a/tests/xgltestbinding.h
+++ b/tests/xgltestbinding.h
@@ -407,6 +407,7 @@
XGL_IMAGE_SUBRESOURCE_RANGE subresource_range(XGL_IMAGE_ASPECT aspect) const { return subresource_range(create_info_, aspect); }
XGL_EXTENT3D extent() const { return create_info_.extent; }
XGL_EXTENT3D extent(uint32_t mip_level) const { return extent(create_info_.extent, mip_level); }
+ XGL_FORMAT format() const {return create_info_.format;}
XGL_IMAGE_MEMORY_BARRIER image_memory_barrier(XGL_FLAGS output_mask, XGL_FLAGS input_mask,
XGL_IMAGE_LAYOUT old_layout,
diff --git a/tests/xgltestframework.cpp b/tests/xgltestframework.cpp
index fa648a3..7b83596 100644
--- a/tests/xgltestframework.cpp
+++ b/tests/xgltestframework.cpp
@@ -214,11 +214,27 @@
file << 255 << "\n";
for (y = 0; y < image->height(); y++) {
- const char *row = ptr;
+ const int *row = (const int *) ptr;
+ int swapped;
- for (x = 0; x < image->width(); x++) {
- file.write(row, 3);
- row += 4;
+ if (image->format() == XGL_FMT_B8G8R8A8_UNORM)
+ {
+ for (x = 0; x < image->width(); x++) {
+ swapped = (*row & 0xff00ff00) | (*row & 0x000000ff) << 16 | (*row & 0x00ff0000) >> 16;
+ file.write((char *) &swapped, 3);
+ row++;
+ }
+ }
+ else if (image->format() == XGL_FMT_R8G8B8A8_UNORM)
+ {
+ for (x = 0; x < image->width(); x++) {
+ file.write((char *) row, 3);
+ row++;
+ }
+ }
+ else {
+ printf("Unrecognized image format - will not write image files");
+ break;
}
ptr += sr_layout.rowPitch;