[guest] Add skeleton Fuchsia VirtGpu implementation
Reviewed-by: Aaron Ruby <aruby@blackberry.com> Acked-by: Yonggang Luo <luoyonggang@gmail.com> Acked-by: Adam Jackson <ajax@redhat.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27246>
This commit is contained in:
@@ -0,0 +1,62 @@
|
||||
/*
|
||||
* Copyright 2023 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "VirtGpu.h"
|
||||
|
||||
class FuchsiaVirtGpuBlob : public std::enable_shared_from_this<FuchsiaVirtGpuBlob>,
|
||||
public VirtGpuBlob {
|
||||
public:
|
||||
FuchsiaVirtGpuBlob(int64_t deviceHandle, uint32_t blobHandle, uint32_t resourceHandle,
|
||||
uint64_t size);
|
||||
~FuchsiaVirtGpuBlob();
|
||||
|
||||
uint32_t getResourceHandle(void) override;
|
||||
uint32_t getBlobHandle(void) override;
|
||||
int wait(void) override;
|
||||
|
||||
int exportBlob(struct VirtGpuExternalHandle& handle) override;
|
||||
int transferFromHost(uint32_t offset, uint32_t size) override;
|
||||
int transferToHost(uint32_t offset, uint32_t size) override;
|
||||
|
||||
VirtGpuBlobMappingPtr createMapping(void) override;
|
||||
};
|
||||
|
||||
class FuchsiaVirtGpuBlobMapping : public VirtGpuBlobMapping {
|
||||
public:
|
||||
FuchsiaVirtGpuBlobMapping(VirtGpuBlobPtr blob, uint8_t* ptr, uint64_t size);
|
||||
~FuchsiaVirtGpuBlobMapping(void);
|
||||
|
||||
uint8_t* asRawPtr(void) override;
|
||||
};
|
||||
|
||||
class FuchsiaVirtGpuDevice : public VirtGpuDevice {
|
||||
public:
|
||||
FuchsiaVirtGpuDevice(enum VirtGpuCapset capset);
|
||||
~FuchsiaVirtGpuDevice();
|
||||
|
||||
int64_t getDeviceHandle(void) override;
|
||||
|
||||
struct VirtGpuCaps getCaps(void) override;
|
||||
|
||||
VirtGpuBlobPtr createBlob(const struct VirtGpuCreateBlob& blobCreate) override;
|
||||
VirtGpuBlobPtr createPipeBlob(uint32_t size) override;
|
||||
VirtGpuBlobPtr createPipeTexture2D(uint32_t width, uint32_t height, uint32_t format) override;
|
||||
VirtGpuBlobPtr importBlob(const struct VirtGpuExternalHandle& handle) override;
|
||||
|
||||
int execBuffer(struct VirtGpuExecBuffer& execbuffer, VirtGpuBlobPtr blob) override;
|
||||
};
|
||||
@@ -0,0 +1,56 @@
|
||||
/*
|
||||
* Copyright 2023 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#include <cutils/log.h>
|
||||
|
||||
#include "FuchsiaVirtGpu.h"
|
||||
|
||||
FuchsiaVirtGpuBlob::FuchsiaVirtGpuBlob(int64_t deviceHandle, uint32_t blobHandle,
|
||||
uint32_t resourceHandle, uint64_t size) {}
|
||||
|
||||
FuchsiaVirtGpuBlob::~FuchsiaVirtGpuBlob(void) {}
|
||||
|
||||
uint32_t FuchsiaVirtGpuBlob::getBlobHandle(void) {
|
||||
ALOGE("%s: unimplemented", __func__);
|
||||
return 0;
|
||||
}
|
||||
|
||||
uint32_t FuchsiaVirtGpuBlob::getResourceHandle(void) {
|
||||
ALOGE("%s: unimplemented", __func__);
|
||||
return 0;
|
||||
}
|
||||
|
||||
VirtGpuBlobMappingPtr FuchsiaVirtGpuBlob::createMapping(void) {
|
||||
ALOGE("%s: unimplemented", __func__);
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
int FuchsiaVirtGpuBlob::wait() { return -1; }
|
||||
|
||||
int FuchsiaVirtGpuBlob::exportBlob(struct VirtGpuExternalHandle& handle) {
|
||||
ALOGE("%s: unimplemented", __func__);
|
||||
return 0;
|
||||
}
|
||||
|
||||
int FuchsiaVirtGpuBlob::transferFromHost(uint32_t offset, uint32_t size) {
|
||||
ALOGE("%s: unimplemented", __func__);
|
||||
return 0;
|
||||
}
|
||||
|
||||
int FuchsiaVirtGpuBlob::transferToHost(uint32_t offset, uint32_t size) {
|
||||
ALOGE("%s: unimplemented", __func__);
|
||||
return 0;
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
/*
|
||||
* Copyright 2023 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#include "FuchsiaVirtGpu.h"
|
||||
|
||||
FuchsiaVirtGpuBlobMapping::FuchsiaVirtGpuBlobMapping(VirtGpuBlobPtr blob, uint8_t* ptr,
|
||||
uint64_t size) {}
|
||||
|
||||
FuchsiaVirtGpuBlobMapping::~FuchsiaVirtGpuBlobMapping(void) {}
|
||||
|
||||
uint8_t* FuchsiaVirtGpuBlobMapping::asRawPtr(void) { return nullptr; }
|
||||
@@ -0,0 +1,65 @@
|
||||
/*
|
||||
* Copyright 2023 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#include <cutils/log.h>
|
||||
|
||||
#include "FuchsiaVirtGpu.h"
|
||||
|
||||
FuchsiaVirtGpuDevice::FuchsiaVirtGpuDevice(enum VirtGpuCapset capset) : VirtGpuDevice(capset) {}
|
||||
|
||||
FuchsiaVirtGpuDevice::~FuchsiaVirtGpuDevice() {}
|
||||
|
||||
int64_t FuchsiaVirtGpuDevice::getDeviceHandle(void) {
|
||||
ALOGE("%s: unimplemented", __func__);
|
||||
return 0;
|
||||
}
|
||||
|
||||
VirtGpuBlobPtr FuchsiaVirtGpuDevice::createPipeBlob(uint32_t size) {
|
||||
ALOGE("%s: unimplemented", __func__);
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
VirtGpuBlobPtr FuchsiaVirtGpuDevice::createBlob(const struct VirtGpuCreateBlob& blobCreate) {
|
||||
ALOGE("%s: unimplemented", __func__);
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
VirtGpuBlobPtr FuchsiaVirtGpuDevice::createPipeTexture2D(uint32_t width, uint32_t height,
|
||||
uint32_t format) {
|
||||
ALOGE("%s: unimplemented", __func__);
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
VirtGpuBlobPtr FuchsiaVirtGpuDevice::importBlob(const struct VirtGpuExternalHandle& handle) {
|
||||
ALOGE("%s: unimplemented", __func__);
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
int FuchsiaVirtGpuDevice::execBuffer(struct VirtGpuExecBuffer& execbuffer, VirtGpuBlobPtr blob) {
|
||||
ALOGE("%s: unimplemented", __func__);
|
||||
return 0;
|
||||
}
|
||||
|
||||
struct VirtGpuCaps FuchsiaVirtGpuDevice::getCaps(void) { return {}; }
|
||||
|
||||
VirtGpuDevice* createPlatformVirtGpuDevice(enum VirtGpuCapset capset, int fd) {
|
||||
// We don't handle the VirtioGpuPipeStream case.
|
||||
if (fd >= 0) {
|
||||
ALOGE("Fuchsia: fd not handled");
|
||||
abort();
|
||||
}
|
||||
return new FuchsiaVirtGpuDevice(capset);
|
||||
}
|
||||
Reference in New Issue
Block a user