tests: derive XglShaderObj from xgl_testing::Shader
diff --git a/tests/xglrenderframework.cpp b/tests/xglrenderframework.cpp
index d1c5d10..8d59fd2 100644
--- a/tests/xglrenderframework.cpp
+++ b/tests/xglrenderframework.cpp
@@ -647,7 +647,7 @@
XGL_PIPELINE_SHADER_STAGE_CREATE_INFO *stageInfo = (XGL_PIPELINE_SHADER_STAGE_CREATE_INFO*) calloc( 1,sizeof(XGL_PIPELINE_SHADER_STAGE_CREATE_INFO) );
stageInfo->sType = XGL_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO;
stageInfo->shader.stage = m_stage;
- stageInfo->shader.shader = m_shader;
+ stageInfo->shader.shader = obj();
stageInfo->shader.descriptorSetMapping[0].descriptorCount = 0;
stageInfo->shader.linkConstBufferCount = 0;
stageInfo->shader.pLinkConstBufferInfo = XGL_NULL_HANDLE;
@@ -740,10 +740,7 @@
((uint32_t *) createInfo.pCode)[2] = stage;
memcpy(((uint32_t *) createInfo.pCode + 3), shader_code, shader_len + 1);
- err = xglCreateShader(m_device->device(), &createInfo, &m_shader);
- if (err) {
- free((void *) createInfo.pCode);
- }
+ err = init_try(*m_device, createInfo);
}
if (framework->m_use_bil || err) {
@@ -755,14 +752,9 @@
createInfo.pCode = bil.data();
createInfo.codeSize = bil.size() * sizeof(unsigned int);
createInfo.flags = 0;
- err = xglCreateShader(m_device->device(), &createInfo, &m_shader);
- assert(!err);
- }
-}
-XglShaderObj::~XglShaderObj()
-{
- if (m_shader != XGL_NULL_HANDLE) xglDestroyObject(m_shader);
+ init(*m_device, createInfo);
+ }
}
XglPipelineObj::XglPipelineObj(XglDevice *device)
diff --git a/tests/xglrenderframework.h b/tests/xglrenderframework.h
index 35a9013..79072d0 100644
--- a/tests/xglrenderframework.h
+++ b/tests/xglrenderframework.h
@@ -210,11 +210,10 @@
};
-class XglShaderObj
+class XglShaderObj : public xgl_testing::Shader
{
public:
XglShaderObj(XglDevice *device, const char * shaderText, XGL_PIPELINE_SHADER_STAGE stage, XglRenderFramework *framework);
- ~XglShaderObj();
XGL_PIPELINE_SHADER_STAGE_CREATE_INFO* GetStageCreateInfo(XglDescriptorSetObj *descriptorSet);
void BindShaderEntitySlotToMemory(int slot, XGL_DESCRIPTOR_SET_SLOT_TYPE type, XglConstantBufferObj *constantBuffer);
void BindShaderEntitySlotToImage(int slot, XGL_DESCRIPTOR_SET_SLOT_TYPE type, XglTextureObj *texture);
@@ -222,7 +221,6 @@
protected:
XGL_PIPELINE_SHADER_STAGE_CREATE_INFO stage_info;
- XGL_SHADER m_shader;
XGL_PIPELINE_SHADER_STAGE m_stage;
XglDevice *m_device;
vector<int> m_memSlots;