Mesa (master): swr/rast: Use metadata to communicate between passes
Tim Rowley
torowley at kemper.freedesktop.org
Fri May 25 16:00:09 UTC 2018
Module: Mesa
Branch: master
Commit: 14b5cac0be15b2a1f6624431ae1b694f3a4487dd
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=14b5cac0be15b2a1f6624431ae1b694f3a4487dd
Author: Alok Hota <alok.hota at intel.com>
Date: Fri May 25 10:19:45 2018 -0500
swr/rast: Use metadata to communicate between passes
Reviewed-by: Bruce Cherniak <bruce.cherniak at intel.com>
---
.../drivers/swr/rasterizer/jitter/builder.h | 28 ++++++++++++++++++++++
1 file changed, 28 insertions(+)
diff --git a/src/gallium/drivers/swr/rasterizer/jitter/builder.h b/src/gallium/drivers/swr/rasterizer/jitter/builder.h
index 6ca128d38f..08a3a6e473 100644
--- a/src/gallium/drivers/swr/rasterizer/jitter/builder.h
+++ b/src/gallium/drivers/swr/rasterizer/jitter/builder.h
@@ -124,6 +124,34 @@ namespace SwrJit
bool SetTexelMaskEvaluate(Instruction* inst);
bool IsTexelMaskEvaluate(Instruction* inst);
Type* GetVectorType(Type* pType);
+ void SetMetadata(StringRef s, uint32_t val)
+ {
+ llvm::NamedMDNode *metaData = mpJitMgr->mpCurrentModule->getOrInsertNamedMetadata(s);
+ Constant* cval = mpIRBuilder->getInt32(val);
+ llvm::MDNode *mdNode = llvm::MDNode::get(mpJitMgr->mpCurrentModule->getContext(), llvm::ConstantAsMetadata::get(cval));
+ if (metaData->getNumOperands())
+ {
+ metaData->setOperand(0, mdNode);
+ }
+ else
+ {
+ metaData->addOperand(mdNode);
+ }
+ }
+ uint32_t GetMetadata(StringRef s)
+ {
+ NamedMDNode* metaData = mpJitMgr->mpCurrentModule->getNamedMetadata(s);
+ if (metaData)
+ {
+ MDNode* mdNode = metaData->getOperand(0);
+ Metadata* val = mdNode->getOperand(0);
+ return mdconst::dyn_extract<ConstantInt>(val)->getZExtValue();
+ }
+ else
+ {
+ return 0;
+ }
+ }
#include "gen_builder.hpp"
#include "gen_builder_meta.hpp"
More information about the mesa-commit
mailing list