aboutsummaryrefslogtreecommitdiff
path: root/src/video_core/shader/shader_ir.h
diff options
context:
space:
mode:
authorbunnei <bunneidev@gmail.com>2019-04-16 22:15:17 -0400
committerGitHub <noreply@github.com>2019-04-16 22:15:17 -0400
commit1b83f255c290fd83562502f019799ad86a85b8a8 (patch)
tree07fc355ae298cc71153d2653283723137ce9c958 /src/video_core/shader/shader_ir.h
parent2654eb659e24d2d29df83516a98600f3277d2dad (diff)
parent5c280e6ff04ae36e8cd7ba81cce4ae89e0a49b80 (diff)
Merge pull request #2092 from ReinUsesLisp/stg
shader/memory: Implement STG and global memory flushing
Diffstat (limited to 'src/video_core/shader/shader_ir.h')
-rw-r--r--src/video_core/shader/shader_ir.h16
1 files changed, 13 insertions, 3 deletions
diff --git a/src/video_core/shader/shader_ir.h b/src/video_core/shader/shader_ir.h
index 4888998d3..1afab08c0 100644
--- a/src/video_core/shader/shader_ir.h
+++ b/src/video_core/shader/shader_ir.h
@@ -276,6 +276,11 @@ struct GlobalMemoryBase {
}
};
+struct GlobalMemoryUsage {
+ bool is_read{};
+ bool is_written{};
+};
+
struct MetaArithmetic {
bool precise{};
};
@@ -578,8 +583,8 @@ public:
return used_clip_distances;
}
- const std::set<GlobalMemoryBase>& GetGlobalMemoryBases() const {
- return used_global_memory_bases;
+ const std::map<GlobalMemoryBase, GlobalMemoryUsage>& GetGlobalMemory() const {
+ return used_global_memory;
}
std::size_t GetLength() const {
@@ -781,6 +786,11 @@ private:
std::pair<Node, s64> TrackRegister(const GprNode* tracked, const NodeBlock& code, s64 cursor);
+ std::tuple<Node, Node, GlobalMemoryBase> TrackAndGetGlobalMemory(NodeBlock& bb,
+ Node addr_register,
+ u32 immediate_offset,
+ bool is_write);
+
template <typename... T>
Node Operation(OperationCode code, const T*... operands) {
return StoreNode(OperationNode(code, operands...));
@@ -834,7 +844,7 @@ private:
std::map<u32, ConstBuffer> used_cbufs;
std::set<Sampler> used_samplers;
std::array<bool, Tegra::Engines::Maxwell3D::Regs::NumClipDistances> used_clip_distances{};
- std::set<GlobalMemoryBase> used_global_memory_bases;
+ std::map<GlobalMemoryBase, GlobalMemoryUsage> used_global_memory;
Tegra::Shader::Header header;
};