1
Fork 0

Bump vulkan requirement to 1.3, use dynamic state to toggle depth test

This commit is contained in:
Joshua Goins 2022-10-05 23:06:42 -04:00
parent 85f1721c10
commit 5a5f31b2f6

View file

@ -485,7 +485,10 @@ static std::tuple<VkPipeline, VkPipelineLayout, VkDescriptorSetLayout> gfx_vulka
color_blending.attachmentCount = 1;
color_blending.pAttachments = &color_blend_attachment;
const std::array dynamic_states = { VK_DYNAMIC_STATE_VIEWPORT, VK_DYNAMIC_STATE_SCISSOR };
const std::array dynamic_states = { VK_DYNAMIC_STATE_VIEWPORT,
VK_DYNAMIC_STATE_SCISSOR,
VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE,
VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE };
VkPipelineDynamicStateCreateInfo dynamic_state = {};
dynamic_state.sType = VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO;
@ -651,7 +654,7 @@ static void gfx_vulkan_create_instance() {
VkApplicationInfo application_info = {};
application_info.sType = VK_STRUCTURE_TYPE_APPLICATION_INFO;
application_info.apiVersion = VK_API_VERSION_1_1;
application_info.apiVersion = VK_API_VERSION_1_3;
application_info.pApplicationName = "Super Mario 64";
application_info.pEngineName = "Super Mario 64 PC-Port";
@ -762,15 +765,19 @@ static void gfx_vulkan_create_device() {
}
}
VkPhysicalDeviceExtendedDynamicStateFeaturesEXT enabled_features = {};
enabled_features.extendedDynamicState = true;
std::array<const char*, 1> device_extensions = {"VK_KHR_swapchain"};
VkDeviceCreateInfo device_create_info = {};
device_create_info.sType = VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO;
device_create_info.pNext = &enabled_features;
device_create_info.pQueueCreateInfos = queue_create_infos.data();
device_create_info.queueCreateInfoCount =
static_cast<uint32_t>(queue_create_infos.size());
device_create_info.ppEnabledExtensionNames = device_extensions.data();
device_create_info.enabledExtensionCount = device_extensions.size();
device_create_info.enabledExtensionCount = device_extensions.size();\
vkCreateDevice(physical_device, &device_create_info, nullptr, &device);
@ -1432,9 +1439,11 @@ static void gfx_vulkan_renderer_set_sampler_parameters(int tile, bool linear_fil
}
static void gfx_vulkan_renderer_set_depth_test(bool depth_test) {
vkCmdSetDepthTestEnable(current_cmd, depth_test);
}
static void gfx_vulkan_renderer_set_depth_mask(bool z_upd) {
vkCmdSetDepthWriteEnable(current_cmd, z_upd);
}
static void gfx_vulkan_renderer_set_zmode_decal(bool zmode_decal) {