shader: Fix rasterizer integration order issues
This commit is contained in:
parent
17063d16a3
commit
ec005be99d
|
@ -139,7 +139,6 @@ void GraphicsPipeline::Configure(bool is_indexed) {
|
||||||
static_vector<VkSampler, max_images_elements> samplers;
|
static_vector<VkSampler, max_images_elements> samplers;
|
||||||
|
|
||||||
texture_cache->SynchronizeGraphicsDescriptors();
|
texture_cache->SynchronizeGraphicsDescriptors();
|
||||||
texture_cache->UpdateRenderTargets(false);
|
|
||||||
|
|
||||||
const auto& regs{maxwell3d->regs};
|
const auto& regs{maxwell3d->regs};
|
||||||
const bool via_header_index{regs.sampler_index == Maxwell::SamplerIndex::ViaHeaderIndex};
|
const bool via_header_index{regs.sampler_index == Maxwell::SamplerIndex::ViaHeaderIndex};
|
||||||
|
@ -181,13 +180,17 @@ void GraphicsPipeline::Configure(bool is_indexed) {
|
||||||
PushImageDescriptors(stage_infos[stage], samplers.data(), image_view_ids.data(),
|
PushImageDescriptors(stage_infos[stage], samplers.data(), image_view_ids.data(),
|
||||||
*texture_cache, *update_descriptor_queue, index);
|
*texture_cache, *update_descriptor_queue, index);
|
||||||
}
|
}
|
||||||
|
texture_cache->UpdateRenderTargets(false);
|
||||||
|
scheduler->RequestRenderpass(texture_cache->GetFramebuffer());
|
||||||
|
|
||||||
|
scheduler->BindGraphicsPipeline(*pipeline);
|
||||||
|
|
||||||
if (!descriptor_set_layout) {
|
if (!descriptor_set_layout) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
const VkDescriptorSet descriptor_set{descriptor_allocator.Commit()};
|
const VkDescriptorSet descriptor_set{descriptor_allocator.Commit()};
|
||||||
update_descriptor_queue->Send(*descriptor_update_template, descriptor_set);
|
update_descriptor_queue->Send(*descriptor_update_template, descriptor_set);
|
||||||
|
|
||||||
scheduler->BindGraphicsPipeline(*pipeline);
|
|
||||||
scheduler->Record([descriptor_set, layout = *pipeline_layout](vk::CommandBuffer cmdbuf) {
|
scheduler->Record([descriptor_set, layout = *pipeline_layout](vk::CommandBuffer cmdbuf) {
|
||||||
cmdbuf.BindDescriptorSets(VK_PIPELINE_BIND_POINT_GRAPHICS, layout, 0, descriptor_set,
|
cmdbuf.BindDescriptorSets(VK_PIPELINE_BIND_POINT_GRAPHICS, layout, 0, descriptor_set,
|
||||||
nullptr);
|
nullptr);
|
||||||
|
|
|
@ -178,7 +178,6 @@ void RasterizerVulkan::Draw(bool is_indexed, bool is_instanced) {
|
||||||
|
|
||||||
BeginTransformFeedback();
|
BeginTransformFeedback();
|
||||||
|
|
||||||
scheduler.RequestRenderpass(texture_cache.GetFramebuffer());
|
|
||||||
UpdateDynamicStates();
|
UpdateDynamicStates();
|
||||||
|
|
||||||
const auto& regs{maxwell3d.regs};
|
const auto& regs{maxwell3d.regs};
|
||||||
|
|
|
@ -56,15 +56,12 @@ VkRenderPass RenderPassCache::Get(const RenderPassKey& key) {
|
||||||
return *pair->second;
|
return *pair->second;
|
||||||
}
|
}
|
||||||
boost::container::static_vector<VkAttachmentDescription, 9> descriptions;
|
boost::container::static_vector<VkAttachmentDescription, 9> descriptions;
|
||||||
u32 num_images{0};
|
|
||||||
|
|
||||||
for (size_t index = 0; index < key.color_formats.size(); ++index) {
|
for (size_t index = 0; index < key.color_formats.size(); ++index) {
|
||||||
const PixelFormat format{key.color_formats[index]};
|
const PixelFormat format{key.color_formats[index]};
|
||||||
if (format == PixelFormat::Invalid) {
|
if (format == PixelFormat::Invalid) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
descriptions.push_back(AttachmentDescription(*device, format, key.samples));
|
descriptions.push_back(AttachmentDescription(*device, format, key.samples));
|
||||||
++num_images;
|
|
||||||
}
|
}
|
||||||
const size_t num_colors{descriptions.size()};
|
const size_t num_colors{descriptions.size()};
|
||||||
const VkAttachmentReference* depth_attachment{};
|
const VkAttachmentReference* depth_attachment{};
|
||||||
|
@ -89,7 +86,7 @@ VkRenderPass RenderPassCache::Get(const RenderPassKey& key) {
|
||||||
.pNext = nullptr,
|
.pNext = nullptr,
|
||||||
.flags = 0,
|
.flags = 0,
|
||||||
.attachmentCount = static_cast<u32>(descriptions.size()),
|
.attachmentCount = static_cast<u32>(descriptions.size()),
|
||||||
.pAttachments = descriptions.data(),
|
.pAttachments = descriptions.empty() ? nullptr : descriptions.data(),
|
||||||
.subpassCount = 1,
|
.subpassCount = 1,
|
||||||
.pSubpasses = &subpass,
|
.pSubpasses = &subpass,
|
||||||
.dependencyCount = 0,
|
.dependencyCount = 0,
|
||||||
|
|
Reference in New Issue