From 1b17316bf38b7f2c23ce648ddd718e1f48641309 Mon Sep 17 00:00:00 2001 From: Gert Wollny Date: Fri, 27 Dec 2019 17:49:27 +0100 Subject: [PATCH] r600/sfn: Add a load GDS result instruction This is required to read results for atomic SSBO instructions Signed-off-by: Gert Wollny Part-of: --- .../r600/sfn/sfn_instruction_fetch.cpp | 27 +++++++++++++++++++ .../drivers/r600/sfn/sfn_instruction_fetch.h | 5 ++++ 2 files changed, 32 insertions(+) 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 -- 2.30.2