Revert "Use the shared slots host memory allocator"
This reverts commit fa6d39c4cc1df808f46f83d20408e7f57ea0ca82.
Bug: 151752077
Bug: 149254427
Test: none
Change-Id: I21124384d4e462305a186685a82c541e01a4cef9
Signed-off-by: Roman Kiryanov <rkir@google.com>
diff --git a/shared/OpenglCodecCommon/goldfish_address_space.h b/shared/OpenglCodecCommon/goldfish_address_space.h
index 4216bb9..064f601 100644
--- a/shared/OpenglCodecCommon/goldfish_address_space.h
+++ b/shared/OpenglCodecCommon/goldfish_address_space.h
@@ -48,7 +48,6 @@
Graphics = 0,
Media = 1,
HostMemoryAllocator = 5,
- SharedSlotsHostMemoryAllocator = 6,
};
class GoldfishAddressSpaceBlockProvider {
@@ -56,8 +55,6 @@
GoldfishAddressSpaceBlockProvider(GoldfishAddressSpaceSubdeviceType subdevice);
~GoldfishAddressSpaceBlockProvider();
- bool open(GoldfishAddressSpaceSubdeviceType subdevice);
-
private:
GoldfishAddressSpaceBlockProvider(const GoldfishAddressSpaceBlockProvider &rhs);
GoldfishAddressSpaceBlockProvider &operator=(const GoldfishAddressSpaceBlockProvider &rhs);
@@ -117,7 +114,7 @@
class GoldfishAddressSpaceHostMemoryAllocator {
public:
- GoldfishAddressSpaceHostMemoryAllocator(bool trySharedSlots = true);
+ GoldfishAddressSpaceHostMemoryAllocator();
long hostMalloc(GoldfishAddressSpaceBlock *block, size_t size);
void hostFree(GoldfishAddressSpaceBlock *block);
diff --git a/shared/OpenglCodecCommon/goldfish_address_space_android.impl b/shared/OpenglCodecCommon/goldfish_address_space_android.impl
index 96194bd..646695f 100644
--- a/shared/OpenglCodecCommon/goldfish_address_space_android.impl
+++ b/shared/OpenglCodecCommon/goldfish_address_space_android.impl
@@ -58,7 +58,6 @@
const int HOST_MEMORY_ALLOCATOR_COMMAND_ALLOCATE_ID = 1;
const int HOST_MEMORY_ALLOCATOR_COMMAND_UNALLOCATE_ID = 2;
-const int HOST_MEMORY_ALLOCATOR_COMMAND_CHECK_IF_SHARED_SLOTS_SUPPORTED_ID = 3;
int create_address_space_fd()
{
@@ -87,12 +86,7 @@
request.version = sizeof(request);
request.metadata = type;
- long ret = ioctl_ping(fd, &request);
- if (ret) {
- return ret;
- }
-
- return request.metadata;
+ return ioctl_ping(fd, &request);
}
long ioctl_claim_shared(int fd, struct goldfish_address_space_claim_shared *request)
@@ -108,8 +102,16 @@
} // namespace
GoldfishAddressSpaceBlockProvider::GoldfishAddressSpaceBlockProvider(GoldfishAddressSpaceSubdeviceType subdevice)
+ : m_handle(create_address_space_fd())
{
- open(subdevice);
+ if ((subdevice != GoldfishAddressSpaceSubdeviceType::NoSubdevice) && is_opened()) {
+ const long ret = set_address_space_subdevice_type(m_handle, subdevice);
+ if (ret) {
+ ALOGE("%s: set_address_space_subdevice_type failed for device_type=%lu, ret=%ld",
+ __func__, static_cast<unsigned long>(subdevice), ret);
+ close();
+ }
+ }
}
GoldfishAddressSpaceBlockProvider::~GoldfishAddressSpaceBlockProvider()
@@ -124,24 +126,6 @@
return m_handle >= 0;
}
-bool GoldfishAddressSpaceBlockProvider::open(GoldfishAddressSpaceSubdeviceType subdevice)
-{
- close();
-
- m_handle = create_address_space_fd();
- if ((subdevice != GoldfishAddressSpaceSubdeviceType::NoSubdevice) && is_opened()) {
- const long ret = set_address_space_subdevice_type(m_handle, subdevice);
- if (ret) {
- ALOGE("%s: set_address_space_subdevice_type failed for device_type=%lu, ret=%ld",
- __func__, static_cast<unsigned long>(subdevice), ret);
- close();
- return false;
- }
- }
-
- return true;
-}
-
void GoldfishAddressSpaceBlockProvider::close()
{
if (is_opened()) {
@@ -353,13 +337,8 @@
::munmap(ptr, size);
}
-GoldfishAddressSpaceHostMemoryAllocator::GoldfishAddressSpaceHostMemoryAllocator(bool trySharedSlots)
- : m_provider(trySharedSlots ? GoldfishAddressSpaceSubdeviceType::SharedSlotsHostMemoryAllocator
- : GoldfishAddressSpaceSubdeviceType::HostMemoryAllocator) {
- if (trySharedSlots && !m_provider.is_opened()) {
- m_provider.open(GoldfishAddressSpaceSubdeviceType::HostMemoryAllocator);
- }
-}
+GoldfishAddressSpaceHostMemoryAllocator::GoldfishAddressSpaceHostMemoryAllocator()
+ : m_provider(GoldfishAddressSpaceSubdeviceType::HostMemoryAllocator) {}
bool GoldfishAddressSpaceHostMemoryAllocator::is_opened() const { return m_provider.is_opened(); }
@@ -374,52 +353,24 @@
if (!m_provider.is_opened()) {
return -ENODEV;
}
+ if (!block->allocate(&m_provider, size)) {
+ return -ENOMEM;
+ }
struct goldfish_address_space_ping request;
::memset(&request, 0, sizeof(request));
- request.metadata = HOST_MEMORY_ALLOCATOR_COMMAND_CHECK_IF_SHARED_SLOTS_SUPPORTED_ID;
+ request.version = sizeof(request);
+ request.offset = block->offset();
+ request.size = block->size();
+ request.metadata = HOST_MEMORY_ALLOCATOR_COMMAND_ALLOCATE_ID;
+
long ret = ioctl_ping(m_provider.m_handle, &request);
if (ret) {
return ret;
}
-
- if (request.metadata) {
- // shared memory slots are not supported
- if (!block->allocate(&m_provider, size)) {
- return -ENOMEM;
- }
-
- ::memset(&request, 0, sizeof(request));
- request.version = sizeof(request);
- request.offset = block->offset();
- request.size = block->size();
- request.metadata = HOST_MEMORY_ALLOCATOR_COMMAND_ALLOCATE_ID;
-
- long ret = ioctl_ping(m_provider.m_handle, &request);
- if (ret) {
- return ret;
- }
- ret = static_cast<long>(request.metadata);
- if (ret) {
- return ret;
- }
- } else {
- // shared memory slots are supported
- ::memset(&request, 0, sizeof(request));
- request.version = sizeof(request);
- request.size = size;
- request.metadata = HOST_MEMORY_ALLOCATOR_COMMAND_ALLOCATE_ID;
-
- long ret = ioctl_ping(m_provider.m_handle, &request);
- if (ret) {
- return ret;
- }
- ret = static_cast<long>(request.metadata);
- if (ret) {
- return ret;
- }
-
- block->claimShared(&m_provider, request.offset, request.size);
+ ret = static_cast<long>(request.metadata);
+ if (ret) {
+ return ret;
}
block->mmap(0);
diff --git a/shared/OpenglCodecCommon/goldfish_address_space_fuchsia.impl b/shared/OpenglCodecCommon/goldfish_address_space_fuchsia.impl
index cb2ce93..4d54eed 100644
--- a/shared/OpenglCodecCommon/goldfish_address_space_fuchsia.impl
+++ b/shared/OpenglCodecCommon/goldfish_address_space_fuchsia.impl
@@ -228,7 +228,7 @@
}
}
-GoldfishAddressSpaceHostMemoryAllocator::GoldfishAddressSpaceHostMemoryAllocator(bool trySharedSlots)
+GoldfishAddressSpaceHostMemoryAllocator::GoldfishAddressSpaceHostMemoryAllocator()
: m_provider(GoldfishAddressSpaceSubdeviceType::HostMemoryAllocator) { }
long GoldfishAddressSpaceHostMemoryAllocator::hostMalloc(GoldfishAddressSpaceBlock *block, size_t size)
@@ -240,18 +240,6 @@
{
}
-bool GoldfishAddressSpaceHostMemoryAllocator::is_opened() const {
- return false;
-}
-
-address_space_handle_t GoldfishAddressSpaceHostMemoryAllocator::release() {
- return m_provider.release();
-}
-
-void GoldfishAddressSpaceHostMemoryAllocator::closeHandle(address_space_handle_t handle) {
- GoldfishAddressSpaceBlockProvider::closeHandle(handle);
-}
-
class VmoStore {
public:
struct Info {
diff --git a/shared/OpenglCodecCommon/goldfish_address_space_host.impl b/shared/OpenglCodecCommon/goldfish_address_space_host.impl
index 5a5ee75..6630ed7 100644
--- a/shared/OpenglCodecCommon/goldfish_address_space_host.impl
+++ b/shared/OpenglCodecCommon/goldfish_address_space_host.impl
@@ -231,13 +231,8 @@
void GoldfishAddressSpaceBlock::memoryUnmap(void *ptr, size_t size) {}
-GoldfishAddressSpaceHostMemoryAllocator::GoldfishAddressSpaceHostMemoryAllocator(bool trySharedSlots)
- : m_provider(trySharedSlots ? GoldfishAddressSpaceSubdeviceType::SharedSlotsHostMemoryAllocator
- : GoldfishAddressSpaceSubdeviceType::HostMemoryAllocator) {
- if (trySharedSlots && !m_provider.is_opened()) {
- m_provider.open(GoldfishAddressSpaceSubdeviceType::HostMemoryAllocator);
- }
-}
+GoldfishAddressSpaceHostMemoryAllocator::GoldfishAddressSpaceHostMemoryAllocator()
+ : m_provider(GoldfishAddressSpaceSubdeviceType::HostMemoryAllocator) {}
bool GoldfishAddressSpaceHostMemoryAllocator::is_opened() const { return m_provider.is_opened(); }
diff --git a/system/hals/allocator3.cpp b/system/hals/allocator3.cpp
index 457ab91..63d79ef 100644
--- a/system/hals/allocator3.cpp
+++ b/system/hals/allocator3.cpp
@@ -329,7 +329,7 @@
const int32_t bytesPerPixel,
const int32_t stride,
cb_handle_30_t** cb) {
- GoldfishAddressSpaceHostMemoryAllocator host_memory_allocator(true);
+ GoldfishAddressSpaceHostMemoryAllocator host_memory_allocator;
if (!host_memory_allocator.is_opened()) {
RETURN_ERROR(Error3::NO_RESOURCES);
}
diff --git a/system/hals/mapper3.cpp b/system/hals/mapper3.cpp
index cbfff9a..b48e497 100644
--- a/system/hals/mapper3.cpp
+++ b/system/hals/mapper3.cpp
@@ -77,7 +77,7 @@
class GoldfishMapper : public IMapper3 {
public:
GoldfishMapper() : m_hostConn(HostConnection::createUnique()) {
- GoldfishAddressSpaceHostMemoryAllocator host_memory_allocator(false);
+ GoldfishAddressSpaceHostMemoryAllocator host_memory_allocator;
CRASH_IF(!host_memory_allocator.is_opened(),
"GoldfishAddressSpaceHostMemoryAllocator failed to open");
@@ -86,8 +86,6 @@
"hostMalloc failed");
m_physAddrToOffset = bufferBits.physAddr() - bufferBits.offset();
-
- host_memory_allocator.hostFree(&bufferBits);
}
Return<void> importBuffer(const hidl_handle& hh,