Bump vulkan requirement to 1.3, use dynamic state to toggle depth test
This commit is contained in:
parent
85f1721c10
commit
5a5f31b2f6
1 changed files with 12 additions and 3 deletions
|
@ -485,7 +485,10 @@ static std::tuple<VkPipeline, VkPipelineLayout, VkDescriptorSetLayout> gfx_vulka
|
||||||
color_blending.attachmentCount = 1;
|
color_blending.attachmentCount = 1;
|
||||||
color_blending.pAttachments = &color_blend_attachment;
|
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 = {};
|
VkPipelineDynamicStateCreateInfo dynamic_state = {};
|
||||||
dynamic_state.sType = VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO;
|
dynamic_state.sType = VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO;
|
||||||
|
@ -651,7 +654,7 @@ static void gfx_vulkan_create_instance() {
|
||||||
|
|
||||||
VkApplicationInfo application_info = {};
|
VkApplicationInfo application_info = {};
|
||||||
application_info.sType = VK_STRUCTURE_TYPE_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.pApplicationName = "Super Mario 64";
|
||||||
application_info.pEngineName = "Super Mario 64 PC-Port";
|
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"};
|
std::array<const char*, 1> device_extensions = {"VK_KHR_swapchain"};
|
||||||
|
|
||||||
VkDeviceCreateInfo device_create_info = {};
|
VkDeviceCreateInfo device_create_info = {};
|
||||||
device_create_info.sType = VK_STRUCTURE_TYPE_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.pQueueCreateInfos = queue_create_infos.data();
|
||||||
device_create_info.queueCreateInfoCount =
|
device_create_info.queueCreateInfoCount =
|
||||||
static_cast<uint32_t>(queue_create_infos.size());
|
static_cast<uint32_t>(queue_create_infos.size());
|
||||||
device_create_info.ppEnabledExtensionNames = device_extensions.data();
|
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);
|
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) {
|
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) {
|
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) {
|
static void gfx_vulkan_renderer_set_zmode_decal(bool zmode_decal) {
|
||||||
|
|
Loading…
Add table
Reference in a new issue