Skip to content

Commit 7c92446

Browse files
ziga-lunargspencer-lunarg
authored andcommitted
tests: Test compute and linked graphics shaders
1 parent 24120e8 commit 7c92446

1 file changed

Lines changed: 40 additions & 1 deletion

File tree

tests/unit/shader_object_positive.cpp

Lines changed: 40 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1583,4 +1583,43 @@ TEST_F(PositiveShaderObject, SetPointTopologyNoWrite) {
15831583
vk::CmdDraw(m_command_buffer.handle(), 4, 1, 0, 0);
15841584
m_command_buffer.EndRendering();
15851585
m_command_buffer.End();
1586-
}
1586+
}
1587+
1588+
TEST_F(PositiveShaderObject, MultiCreateGraphicsCompute) {
1589+
AddRequiredExtensions(VK_EXT_SHADER_OBJECT_EXTENSION_NAME);
1590+
AddRequiredExtensions(VK_KHR_DYNAMIC_RENDERING_EXTENSION_NAME);
1591+
AddRequiredFeature(vkt::Feature::dynamicRendering);
1592+
AddRequiredFeature(vkt::Feature::shaderObject);
1593+
RETURN_IF_SKIP(Init());
1594+
InitDynamicRenderTarget();
1595+
1596+
const auto vert_spv = GLSLToSPV(VK_SHADER_STAGE_VERTEX_BIT, kMinimalShaderGlsl);
1597+
const auto frag_spv = GLSLToSPV(VK_SHADER_STAGE_FRAGMENT_BIT, kMinimalShaderGlsl);
1598+
const auto comp_spv = GLSLToSPV(VK_SHADER_STAGE_COMPUTE_BIT, kMinimalShaderGlsl);
1599+
1600+
VkShaderCreateInfoEXT shader_create_infos[3];
1601+
shader_create_infos[0] = ShaderCreateInfoLink(vert_spv, VK_SHADER_STAGE_VERTEX_BIT, VK_SHADER_STAGE_FRAGMENT_BIT);
1602+
shader_create_infos[1] = ShaderCreateInfoLink(frag_spv, VK_SHADER_STAGE_FRAGMENT_BIT);
1603+
shader_create_infos[2] = ShaderCreateInfo(comp_spv, VK_SHADER_STAGE_COMPUTE_BIT);
1604+
1605+
VkShaderEXT shaders[3];
1606+
vk::CreateShadersEXT(m_device->handle(), 3, shader_create_infos, nullptr, shaders);
1607+
1608+
VkRenderingInfo rendering_info = vku::InitStructHelper();
1609+
rendering_info.colorAttachmentCount = 0;
1610+
rendering_info.layerCount = 1;
1611+
rendering_info.renderArea = {{0, 0}, {1, 1}};
1612+
1613+
m_command_buffer.Begin();
1614+
m_command_buffer.BeginRendering(rendering_info);
1615+
SetDefaultDynamicStatesExclude({VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT});
1616+
const VkShaderStageFlagBits stages[] = {VK_SHADER_STAGE_VERTEX_BIT, VK_SHADER_STAGE_FRAGMENT_BIT};
1617+
vk::CmdBindShadersEXT(m_command_buffer, 2, stages, shaders);
1618+
vk::CmdDraw(m_command_buffer, 3, 1, 0, 0);
1619+
m_command_buffer.EndRendering();
1620+
m_command_buffer.End();
1621+
1622+
for (uint32_t i = 0; i < 3; ++i) {
1623+
vk::DestroyShaderEXT(m_device->handle(), shaders[i], nullptr);
1624+
}
1625+
}

0 commit comments

Comments
 (0)