Implemented VM mode for OpenCL RandomX.

This commit is contained in:
XMRig 2019-09-12 00:01:03 +07:00
parent 4c90f9960e
commit 95daab4bc0
42 changed files with 450 additions and 165 deletions

View file

@ -34,8 +34,7 @@ static_assert(RANDOMX_FLAG_LARGE_PAGES == 1, "RANDOMX_FLAG_LARGE_PAGES flag mism
xmrig::RxCache::RxCache(bool hugePages) :
m_seed()
xmrig::RxCache::RxCache(bool hugePages)
{
if (hugePages) {
m_flags = RANDOMX_FLAG_JIT | RANDOMX_FLAG_LARGE_PAGES;
@ -62,14 +61,14 @@ xmrig::RxCache::~RxCache()
}
bool xmrig::RxCache::init(const uint8_t *seed)
bool xmrig::RxCache::init(const Buffer &seed)
{
if (isReady(seed)) {
return false;
}
memcpy(m_seed, seed, sizeof(m_seed));
randomx_init_cache(m_cache, m_seed, sizeof(m_seed));
m_seed = seed;
randomx_init_cache(m_cache, m_seed.data(), sizeof(m_seed));
m_initCount++;
@ -77,7 +76,7 @@ bool xmrig::RxCache::init(const uint8_t *seed)
}
bool xmrig::RxCache::isReady(const uint8_t *seed) const
bool xmrig::RxCache::isReady(const Buffer &seed) const
{
return m_initCount && memcmp(m_seed, seed, sizeof(m_seed)) == 0;
return !m_seed.isEmpty() && m_seed == seed;
}