From a0b28d035debad2799af668dc7ba1e610a2788e8 Mon Sep 17 00:00:00 2001 From: German Andryeyev Date: Thu, 12 Mar 2020 16:07:39 -0400 Subject: [PATCH] SWDEV-79445 - Remove cl_amd_object_metadata extension Change-Id: I35502d5e3bd4be4a087f4b49b68098f8aa31fdb4 [ROCm/clr commit: 85c09043f3e9be7b3154b3aed58d8a161594e68f] --- projects/clr/rocclr/CMakeLists.txt | 1 - projects/clr/rocclr/platform/object.cpp | 91 ------------------------- projects/clr/rocclr/platform/object.hpp | 34 --------- 3 files changed, 126 deletions(-) delete mode 100644 projects/clr/rocclr/platform/object.cpp diff --git a/projects/clr/rocclr/CMakeLists.txt b/projects/clr/rocclr/CMakeLists.txt index 413666c7c7..7abfedb8f6 100644 --- a/projects/clr/rocclr/CMakeLists.txt +++ b/projects/clr/rocclr/CMakeLists.txt @@ -129,7 +129,6 @@ add_library(oclruntime OBJECT platform/command.cpp platform/ndrange.cpp platform/runtime.cpp - platform/object.cpp platform/memory.cpp platform/program.cpp platform/commandqueue.cpp diff --git a/projects/clr/rocclr/platform/object.cpp b/projects/clr/rocclr/platform/object.cpp deleted file mode 100644 index 5876e050e4..0000000000 --- a/projects/clr/rocclr/platform/object.cpp +++ /dev/null @@ -1,91 +0,0 @@ -/* Copyright (c) 2010-present Advanced Micro Devices, Inc. - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. */ - -#include "platform/object.hpp" - -#include - -namespace amd { - -Atomic ObjectMetadata::nextKey_ = 1; - - -ObjectMetadata::Destructor ObjectMetadata::destructors_[OCL_MAX_KEYS] = {NULL}; - - -bool ObjectMetadata::check(Key key) { return key > 0 && key <= OCL_MAX_KEYS; } - -ObjectMetadata::Key ObjectMetadata::createKey(Destructor destructor) { - Key key = nextKey_++; - - if (!check(key)) { - return 0; - } - - destructors_[key - 1] = destructor; - return key; -} - -ObjectMetadata::~ObjectMetadata() { - if (!values_) { - return; - } - - for (size_t i = 0; i < OCL_MAX_KEYS; ++i) { - if (values_[i] && destructors_[i]) { - destructors_[i](values_[i]); - } - } - - delete[] values_; -} - -void* ObjectMetadata::getValueForKey(Key key) const { - if (!values_ || !check(key)) { - return NULL; - } - - return values_[key - 1]; -} - -bool ObjectMetadata::setValueForKey(Key key, Value value) { - if (!check(key)) { - return false; - } - - while (!values_) { - Value* values = new Value[OCL_MAX_KEYS]; - memset(values, '\0', sizeof(Value) * OCL_MAX_KEYS); - - if (!values_.compareAndSet(NULL, values)) { - delete[] values; - } - } - - size_t index = key - 1; - Value prev = AtomicOperation::swap(value, &values_[index]); - if (prev && destructors_[index] != NULL) { - destructors_[index](prev); - } - - return true; -} - -} // namespace amd diff --git a/projects/clr/rocclr/platform/object.hpp b/projects/clr/rocclr/platform/object.hpp index 4619c12f87..3078b2bdfb 100644 --- a/projects/clr/rocclr/platform/object.hpp +++ b/projects/clr/rocclr/platform/object.hpp @@ -128,42 +128,9 @@ struct ICDDispatchedObject { } }; -#define OCL_MAX_KEYS 8 - -/*! The object metadata container. - */ -class ObjectMetadata { - public: - typedef size_t Key; - typedef void* Value; - - private: - typedef void(CL_CALLBACK* Destructor)(Value); - - static Atomic nextKey_; - static Destructor destructors_[OCL_MAX_KEYS]; - - Atomic values_; - - public: - static bool check(Key key); - - static Key createKey(Destructor destructor = NULL); - - ObjectMetadata() : values_(NULL) {} - ~ObjectMetadata(); - - Value getValueForKey(Key key) const; - - bool setValueForKey(Key key, Value value); -}; - /*! \brief For all OpenCL/Runtime objects. */ class RuntimeObject : public ReferenceCountedObject, public ICDDispatchedObject { - private: - ObjectMetadata metadata_; - public: enum ObjectType { ObjectTypeContext = 0, @@ -180,7 +147,6 @@ class RuntimeObject : public ReferenceCountedObject, public ICDDispatchedObject ObjectTypeLiquidFlashFile = 11 }; - ObjectMetadata& metadata() { return metadata_; } virtual ObjectType objectType() const = 0; };