forked from suyu/suyu
shader: Fix rasterizer integration order issues
This commit is contained in:
parent
17063d16a3
commit
ec005be99d
3 changed files with 6 additions and 7 deletions
|
@ -139,7 +139,6 @@ void GraphicsPipeline::Configure(bool is_indexed) {
|
|||
static_vector<VkSampler, max_images_elements> samplers;
|
||||
|
||||
texture_cache->SynchronizeGraphicsDescriptors();
|
||||
texture_cache->UpdateRenderTargets(false);
|
||||
|
||||
const auto& regs{maxwell3d->regs};
|
||||
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(),
|
||||
*texture_cache, *update_descriptor_queue, index);
|
||||
}
|
||||
texture_cache->UpdateRenderTargets(false);
|
||||
scheduler->RequestRenderpass(texture_cache->GetFramebuffer());
|
||||
|
||||
scheduler->BindGraphicsPipeline(*pipeline);
|
||||
|
||||
if (!descriptor_set_layout) {
|
||||
return;
|
||||
}
|
||||
const VkDescriptorSet descriptor_set{descriptor_allocator.Commit()};
|
||||
update_descriptor_queue->Send(*descriptor_update_template, descriptor_set);
|
||||
|
||||
scheduler->BindGraphicsPipeline(*pipeline);
|
||||
scheduler->Record([descriptor_set, layout = *pipeline_layout](vk::CommandBuffer cmdbuf) {
|
||||
cmdbuf.BindDescriptorSets(VK_PIPELINE_BIND_POINT_GRAPHICS, layout, 0, descriptor_set,
|
||||
nullptr);
|
||||
|
|
|
@ -178,7 +178,6 @@ void RasterizerVulkan::Draw(bool is_indexed, bool is_instanced) {
|
|||
|
||||
BeginTransformFeedback();
|
||||
|
||||
scheduler.RequestRenderpass(texture_cache.GetFramebuffer());
|
||||
UpdateDynamicStates();
|
||||
|
||||
const auto& regs{maxwell3d.regs};
|
||||
|
|
|
@ -56,15 +56,12 @@ VkRenderPass RenderPassCache::Get(const RenderPassKey& key) {
|
|||
return *pair->second;
|
||||
}
|
||||
boost::container::static_vector<VkAttachmentDescription, 9> descriptions;
|
||||
u32 num_images{0};
|
||||
|
||||
for (size_t index = 0; index < key.color_formats.size(); ++index) {
|
||||
const PixelFormat format{key.color_formats[index]};
|
||||
if (format == PixelFormat::Invalid) {
|
||||
continue;
|
||||
}
|
||||
descriptions.push_back(AttachmentDescription(*device, format, key.samples));
|
||||
++num_images;
|
||||
}
|
||||
const size_t num_colors{descriptions.size()};
|
||||
const VkAttachmentReference* depth_attachment{};
|
||||
|
@ -89,7 +86,7 @@ VkRenderPass RenderPassCache::Get(const RenderPassKey& key) {
|
|||
.pNext = nullptr,
|
||||
.flags = 0,
|
||||
.attachmentCount = static_cast<u32>(descriptions.size()),
|
||||
.pAttachments = descriptions.data(),
|
||||
.pAttachments = descriptions.empty() ? nullptr : descriptions.data(),
|
||||
.subpassCount = 1,
|
||||
.pSubpasses = &subpass,
|
||||
.dependencyCount = 0,
|
||||
|
|
Loading…
Reference in a new issue