tests: Add default clear colors to render framework
diff --git a/tests/render_tests.cpp b/tests/render_tests.cpp
index 947c8fe..d6c940f 100644
--- a/tests/render_tests.cpp
+++ b/tests/render_tests.cpp
@@ -228,7 +228,6 @@
XGL_SAMPLER m_sampler;
- XGL_FORMAT m_depth_stencil_fmt;
XGL_IMAGE m_depthStencilImage;
uint32_t m_num_mem;
XGL_GPU_MEMORY *m_depthStencilMem;
@@ -261,7 +260,8 @@
void XglRenderTest::GenericDrawPreparation(XglCommandBufferObj *cmdBuffer, XglPipelineObj *pipelineobj, XglDescriptorSetObj *descriptorSet)
{
- cmdBuffer->ClearAllBuffers(&m_depthStencilBinding, m_depthStencilImage);
+ cmdBuffer->ClearAllBuffers(m_clear_color, m_depth_clear_color, m_stencil_clear_color,
+ &m_depthStencilBinding, m_depthStencilImage);
cmdBuffer->PrepareAttachments();
cmdBuffer->BindStateObject(XGL_STATE_BIND_RASTER, m_stateRaster);
cmdBuffer->BindStateObject(XGL_STATE_BIND_VIEWPORT, m_stateViewport);
diff --git a/tests/xglrenderframework.cpp b/tests/xglrenderframework.cpp
index 6538ea2..9a46f78 100644
--- a/tests/xglrenderframework.cpp
+++ b/tests/xglrenderframework.cpp
@@ -34,9 +34,18 @@
m_stateViewport( XGL_NULL_HANDLE ),
m_stateDepthStencil( XGL_NULL_HANDLE ),
m_width( 256.0 ), // default window width
- m_height( 256.0 ) // default window height
+ m_height( 256.0 ), // default window height
+ m_render_target_fmt( XGL_FMT_R8G8B8A8_UNORM ),
+ m_depth_stencil_fmt( XGL_FMT_UNDEFINED ),
+ m_depth_clear_color( 1.0 ),
+ m_stencil_clear_color( 0 )
{
- m_render_target_fmt = XGL_FMT_R8G8B8A8_UNORM;
+ // clear the back buffer to dark grey
+ m_clear_color.color.rawColor[0] = 64;
+ m_clear_color.color.rawColor[1] = 64;
+ m_clear_color.color.rawColor[2] = 64;
+ m_clear_color.color.rawColor[3] = 0;
+ m_clear_color.useRawValue = true;
m_depthStencilBinding.view = XGL_NULL_HANDLE;
}
@@ -1142,7 +1151,8 @@
xglCmdPipelineBarrier(obj(), barrierPtr);
}
-void XglCommandBufferObj::ClearAllBuffers(XGL_DEPTH_STENCIL_BIND_INFO *depthStencilBinding, XGL_IMAGE depthStencilImage)
+void XglCommandBufferObj::ClearAllBuffers(XGL_CLEAR_COLOR clear_color, float depth_clear_color, uint32_t stencil_clear_color,
+ XGL_DEPTH_STENCIL_BIND_INFO *depthStencilBinding, XGL_IMAGE depthStencilImage)
{
uint32_t i;
const XGL_FLAGS output_mask =
@@ -1178,22 +1188,13 @@
pipeline_barrier.memBarrierCount = 1;
pipeline_barrier.ppMemBarriers = (const void **)&pmemory_barrier;
- // clear the back buffer to dark grey
- XGL_CLEAR_COLOR clearColor = {};
-
- clearColor.color.rawColor[0] = 64;
- clearColor.color.rawColor[1] = 64;
- clearColor.color.rawColor[2] = 64;
- clearColor.color.rawColor[3] = 0;
- clearColor.useRawValue = true;
-
for (i = 0; i < m_renderTargets.size(); i++) {
memory_barrier.image = m_renderTargets[i]->image();
memory_barrier.oldLayout = m_renderTargets[i]->layout();
xglCmdPipelineBarrier( obj(), &pipeline_barrier);
m_renderTargets[i]->layout(memory_barrier.newLayout);
- xglCmdClearColorImage( obj(), m_renderTargets[i]->image(), clearColor, 1, &srRange );
+ xglCmdClearColorImage( obj(), m_renderTargets[i]->image(), clear_color, 1, &srRange );
}
if (depthStencilImage)
@@ -1215,7 +1216,9 @@
xglCmdPipelineBarrier( obj(), &pipeline_barrier);
depthStencilBinding->layout = memory_barrier.newLayout;
- xglCmdClearDepthStencil(obj(), depthStencilImage, 1.0f, 0, 1, &dsRange);
+ xglCmdClearDepthStencil(obj(), depthStencilImage,
+ depth_clear_color, stencil_clear_color,
+ 1, &dsRange);
// prepare depth buffer for rendering
memory_barrier.image = depthStencilImage;
diff --git a/tests/xglrenderframework.h b/tests/xglrenderframework.h
index b774e8f..4bf55f1 100644
--- a/tests/xglrenderframework.h
+++ b/tests/xglrenderframework.h
@@ -81,8 +81,12 @@
vector<XglImage*> m_renderTargets;
float m_width, m_height;
XGL_FORMAT m_render_target_fmt;
+ XGL_FORMAT m_depth_stencil_fmt;
XGL_COLOR_ATTACHMENT_BIND_INFO m_colorBindings[8];
XGL_DEPTH_STENCIL_BIND_INFO m_depthStencilBinding;
+ XGL_CLEAR_COLOR m_clear_color;
+ float m_depth_clear_color;
+ uint32_t m_stencil_clear_color;
/*
* SetUp and TearDown are called by the Google Test framework
@@ -120,8 +124,7 @@
void PipelineBarrier(XGL_PIPELINE_BARRIER *barrierPtr);
void AddRenderTarget(XglImage *renderTarget);
void AddDepthStencil();
- void ClearAllBuffers();
- void ClearAllBuffers(XGL_DEPTH_STENCIL_BIND_INFO *depthStencilBinding, XGL_IMAGE depthStencilImage);
+ void ClearAllBuffers(XGL_CLEAR_COLOR clear_color, float depth_clear_color, uint32_t stencil_clear_color, XGL_DEPTH_STENCIL_BIND_INFO *depthStencilBinding, XGL_IMAGE depthStencilImage);
void PrepareAttachments();
void BindPipeline(XGL_PIPELINE pipeline);
void BindDescriptorSet(XGL_DESCRIPTOR_SET descriptorSet);