summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGert Wollny <gert.wollny@collabora.com>2019-12-27 17:49:27 +0100
committerMarge Bot <eric+marge@anholt.net>2020-02-10 19:09:08 +0000
commit1b17316bf38b7f2c23ce648ddd718e1f48641309 (patch)
tree6bebd3cb766b3a47707a3c68459b88ded593bd03 /src
parent31a4dd6451eec9cf96bec6d211e8e9b9f8032706 (diff)
r600/sfn: Add a load GDS result instruction
This is required to read results for atomic SSBO instructions Signed-off-by: Gert Wollny <gert.wollny@collabora.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3225>
Diffstat (limited to 'src')
-rw-r--r--src/gallium/drivers/r600/sfn/sfn_instruction_fetch.cpp27
-rw-r--r--src/gallium/drivers/r600/sfn/sfn_instruction_fetch.h5
2 files changed, 32 insertions, 0 deletions
diff --git a/src/gallium/drivers/r600/sfn/sfn_instruction_fetch.cpp b/src/gallium/drivers/r600/sfn/sfn_instruction_fetch.cpp
index e51bb588969..0fc4f26358d 100644
--- a/src/gallium/drivers/r600/sfn/sfn_instruction_fetch.cpp
+++ b/src/gallium/drivers/r600/sfn/sfn_instruction_fetch.cpp
@@ -301,6 +301,33 @@ LoadFromScratch::LoadFromScratch(GPRVector dst, PValue src, int scratch_size):
{
}
+FetchGDSOpResult::FetchGDSOpResult(const GPRVector dst, const PValue src):
+ FetchInstruction(vc_fetch,
+ no_index_offset,
+ fmt_32,
+ vtx_nf_int,
+ vtx_es_none,
+ src,
+ dst,
+ 0,
+ false,
+ 0xf,
+ R600_IMAGE_IMMED_RESOURCE_OFFSET,
+ 0,
+ bim_none,
+ false,
+ false,
+ 0,
+ 0,
+ 0,
+ PValue(),
+ {0,7,7,7})
+{
+ set_flag(vtx_srf_mode);
+ set_flag(vtx_vpm);
+}
+
+
static const char *fmt_descr[64] = {
"INVALID",
"8",
diff --git a/src/gallium/drivers/r600/sfn/sfn_instruction_fetch.h b/src/gallium/drivers/r600/sfn/sfn_instruction_fetch.h
index 465f604fed5..d1cc42f6135 100644
--- a/src/gallium/drivers/r600/sfn/sfn_instruction_fetch.h
+++ b/src/gallium/drivers/r600/sfn/sfn_instruction_fetch.h
@@ -169,6 +169,11 @@ public:
LoadFromScratch(GPRVector dst, PValue src, int scratch_size);
};
+class FetchGDSOpResult : public FetchInstruction {
+public:
+ FetchGDSOpResult(const GPRVector dst, const PValue src);
+};
+
}
#endif // SFN_INSTRUCTION_FETCH_H