mirror of
https://github.com/KytyPS5/KytyPS5.git
synced 2026-10-28 00:12:40 +00:00
support storage descriptors and tracked image aliases
This commit is contained in:
1 parent
2890d5f7bb
commit
8a6afc428d
8 files changed
+530
-57
No files matched your search
@@ -178,6 +178,7 @@ public:
|
||||
}
|
||||
}
|
||||
}
|
||||
LinkImageAliases();
|
||||
m_program.info = std::move(m_info);
|
||||
for (const auto& patch: m_patches) {
|
||||
patch.inst->memory.resource = patch.resource;
|
||||
@@ -290,6 +291,24 @@ private:
|
||||
resource->scalar = resource->scalar || inst.memory.kind == ResourceKind::ScalarBuffer;
|
||||
}
|
||||
|
||||
void LinkImageAliases() {
|
||||
for (auto& buffer: m_info.buffers) {
|
||||
const auto* buffer_source = GetDescriptorSource(m_program, buffer.source);
|
||||
if (buffer_source == nullptr || buffer_source->dword_count != 4) {
|
||||
continue;
|
||||
}
|
||||
for (uint32_t i = 0; i < m_info.images.size(); i++) {
|
||||
const auto* image_source = GetDescriptorSource(m_program, m_info.images[i].source);
|
||||
if (image_source != nullptr && image_source->dword_count == 8 &&
|
||||
std::equal(buffer_source->dwords.begin(), buffer_source->dwords.begin() + 4,
|
||||
image_source->dwords.begin())) {
|
||||
buffer.image_alias = i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
uint32_t AddImage(const Instruction& inst) {
|
||||
for (uint32_t i = 0; i < m_info.images.size(); i++) {
|
||||
auto& image = m_info.images[i];
|
||||
|
||||
Reference in new issue
Block a user