mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-08 11:18:08 +02:00
gfxstream: Change createResource to use stride instead of bpp
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:
parent
24cb362a9c
commit
6b92e632da
7 changed files with 19 additions and 15 deletions
|
|
@ -266,9 +266,10 @@ AHardwareBuffer* EmulatedGralloc::allocate(uint32_t width, uint32_t height, uint
|
|||
|
||||
const uint32_t bind =
|
||||
(drmFormat == DRM_FORMAT_R8_BLOB) ? VIRGL_BIND_LINEAR : VIRGL_BIND_RENDER_TARGET;
|
||||
const uint32_t stride = width * (*bpp);
|
||||
|
||||
auto resource =
|
||||
device->createResource(width, height, *virglFormat, PIPE_TEXTURE_2D, bind, *bpp);
|
||||
device->createResource(width, height, stride, *virglFormat, PIPE_TEXTURE_2D, bind);
|
||||
if (!resource) {
|
||||
ALOGE("Failed to allocate: failed to create virtio resource.");
|
||||
return nullptr;
|
||||
|
|
|
|||
|
|
@ -56,8 +56,8 @@ class FuchsiaVirtGpuDevice : public VirtGpuDevice {
|
|||
struct VirtGpuCaps getCaps(void) override;
|
||||
|
||||
VirtGpuResourcePtr createBlob(const struct VirtGpuCreateBlob& blobCreate) override;
|
||||
VirtGpuResourcePtr createResource(uint32_t width, uint32_t height, uint32_t format,
|
||||
uint32_t target, uint32_t bind, uint32_t bpp) override;
|
||||
VirtGpuResourcePtr createResource(uint32_t width, uint32_t height, uint32_t stride,
|
||||
uint32_t format, uint32_t target, uint32_t bind) override;
|
||||
VirtGpuResourcePtr importBlob(const struct VirtGpuExternalHandle& handle) override;
|
||||
|
||||
int execBuffer(struct VirtGpuExecBuffer& execbuffer, const VirtGpuResource* blob) override;
|
||||
|
|
|
|||
|
|
@ -75,8 +75,8 @@ VirtGpuResourcePtr FuchsiaVirtGpuDevice::createBlob(const struct VirtGpuCreateBl
|
|||
}
|
||||
|
||||
VirtGpuResourcePtr FuchsiaVirtGpuDevice::createResource(uint32_t width, uint32_t height,
|
||||
uint32_t virglFormat, uint32_t target,
|
||||
uint32_t bind, uint32_t bpp) {
|
||||
uint32_t stride, uint32_t virglFormat,
|
||||
uint32_t target, uint32_t bind) {
|
||||
ALOGE("%s: unimplemented", __func__);
|
||||
return nullptr;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -178,8 +178,9 @@ class VirtGpuDevice {
|
|||
virtual struct VirtGpuCaps getCaps(void) = 0;
|
||||
|
||||
virtual VirtGpuResourcePtr createBlob(const struct VirtGpuCreateBlob& blobCreate) = 0;
|
||||
virtual VirtGpuResourcePtr createResource(uint32_t width, uint32_t height, uint32_t virglFormat,
|
||||
uint32_t target, uint32_t bind, uint32_t bpp) = 0;
|
||||
virtual VirtGpuResourcePtr createResource(uint32_t width, uint32_t height, uint32_t stride,
|
||||
uint32_t virglFormat, uint32_t target,
|
||||
uint32_t bind) = 0;
|
||||
virtual VirtGpuResourcePtr importBlob(const struct VirtGpuExternalHandle& handle) = 0;
|
||||
|
||||
virtual int execBuffer(struct VirtGpuExecBuffer& execbuffer, const VirtGpuResource* blob) = 0;
|
||||
|
|
|
|||
|
|
@ -68,8 +68,9 @@ class LinuxVirtGpuDevice : public VirtGpuDevice {
|
|||
virtual struct VirtGpuCaps getCaps(void);
|
||||
|
||||
VirtGpuResourcePtr createBlob(const struct VirtGpuCreateBlob& blobCreate) override;
|
||||
VirtGpuResourcePtr createResource(uint32_t width, uint32_t height, uint32_t virglFormat,
|
||||
uint32_t target, uint32_t bind, uint32_t bpp) override;
|
||||
VirtGpuResourcePtr createResource(uint32_t width, uint32_t height, uint32_t stride,
|
||||
uint32_t virglFormat, uint32_t target,
|
||||
uint32_t bind) override;
|
||||
|
||||
virtual VirtGpuResourcePtr importBlob(const struct VirtGpuExternalHandle& handle);
|
||||
virtual int execBuffer(struct VirtGpuExecBuffer& execbuffer, const VirtGpuResource* blob);
|
||||
|
|
|
|||
|
|
@ -150,8 +150,8 @@ struct VirtGpuCaps LinuxVirtGpuDevice::getCaps(void) { return mCaps; }
|
|||
int64_t LinuxVirtGpuDevice::getDeviceHandle(void) { return mDeviceHandle; }
|
||||
|
||||
VirtGpuResourcePtr LinuxVirtGpuDevice::createResource(uint32_t width, uint32_t height,
|
||||
uint32_t virglFormat, uint32_t target,
|
||||
uint32_t bind, uint32_t bpp) {
|
||||
uint32_t stride, uint32_t virglFormat,
|
||||
uint32_t target, uint32_t bind) {
|
||||
drm_virtgpu_resource_create create = {
|
||||
.target = target,
|
||||
.format = virglFormat,
|
||||
|
|
@ -162,8 +162,8 @@ VirtGpuResourcePtr LinuxVirtGpuDevice::createResource(uint32_t width, uint32_t h
|
|||
.array_size = 1U,
|
||||
.last_level = 0,
|
||||
.nr_samples = 0,
|
||||
.size = width * height * bpp,
|
||||
.stride = width * bpp,
|
||||
.size = stride * height,
|
||||
.stride = stride,
|
||||
};
|
||||
|
||||
int ret = drmIoctl(mDeviceHandle, DRM_IOCTL_VIRTGPU_RESOURCE_CREATE, &create);
|
||||
|
|
|
|||
|
|
@ -3816,9 +3816,10 @@ VkResult ResourceTracker::on_vkAllocateMemory(void* context, VkResult input_resu
|
|||
__func__, imageCreateInfo.format);
|
||||
return VK_ERROR_FORMAT_NOT_SUPPORTED;
|
||||
}
|
||||
const uint32_t stride = imageCreateInfo.extent.width * bpp;
|
||||
colorBufferBlob = instance->createResource(imageCreateInfo.extent.width,
|
||||
imageCreateInfo.extent.height, virglFormat,
|
||||
target, bind, bpp);
|
||||
imageCreateInfo.extent.height, stride,
|
||||
virglFormat, target, bind);
|
||||
if (!colorBufferBlob) {
|
||||
mesa_loge("%s: Failed to create colorBuffer resource for Image memory\n", __func__);
|
||||
return VK_ERROR_OUT_OF_DEVICE_MEMORY;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue