From: Bas Nieuwenhuizen Date: Fri, 21 Dec 2018 13:12:17 +0000 (+0100) Subject: turnip: move tu_gem.c to tu_drm.c X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=b0562e272f8a2a41d0639b65a5158b0c3b2dfd3b;p=mesa.git turnip: move tu_gem.c to tu_drm.c --- diff --git a/src/freedreno/vulkan/meson.build b/src/freedreno/vulkan/meson.build index 40cc1f88a74..889dad9b1de 100644 --- a/src/freedreno/vulkan/meson.build +++ b/src/freedreno/vulkan/meson.build @@ -53,8 +53,8 @@ libtu_files = files( 'tu_device.c', 'tu_descriptor_set.c', 'tu_descriptor_set.h', + 'tu_drm.c', 'tu_formats.c', - 'tu_gem.c', 'tu_image.c', 'tu_meta_blit.c', 'tu_meta_buffer.c', diff --git a/src/freedreno/vulkan/tu_drm.c b/src/freedreno/vulkan/tu_drm.c new file mode 100644 index 00000000000..b8a4c6f8a98 --- /dev/null +++ b/src/freedreno/vulkan/tu_drm.c @@ -0,0 +1,94 @@ +/* + * Copyright © 2018 Google, Inc. + * Copyright © 2015 Intel Corporation + * + * 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 (including the next + * paragraph) 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 +#include +#include + +#include + +#include "tu_private.h" + +#include "xf86drm.h" + +/** + * Return gem handle on success. Return 0 on failure. + */ +uint32_t +tu_gem_new(struct tu_device *dev, uint64_t size, uint32_t flags) +{ + struct drm_msm_gem_new req = { + .size = size, + .flags = flags, + }; + + + int ret = drmCommandWriteRead(dev->physical_device->local_fd, DRM_MSM_GEM_NEW, + &req, sizeof(req)); + if (ret) + return 0; + + return req.handle; +} + +void +tu_gem_close(struct tu_device *dev, uint32_t gem_handle) +{ + struct drm_gem_close req = { + .handle = gem_handle, + }; + + drmIoctl(dev->physical_device->local_fd, DRM_IOCTL_GEM_CLOSE, &req); +} + +/** Return UINT64_MAX on error. */ +static uint64_t +tu_gem_info(struct tu_device *dev, uint32_t gem_handle, uint32_t flags) +{ + struct drm_msm_gem_info req = { + .handle = gem_handle, + .flags = flags, + }; + + int ret = drmCommandWriteRead(dev->physical_device->local_fd, DRM_MSM_GEM_INFO, + &req, sizeof(req)); + if (ret == -1) + return UINT64_MAX; + + return req.offset; +} + +/** Return UINT64_MAX on error. */ +uint64_t +tu_gem_info_offset(struct tu_device *dev, uint32_t gem_handle) +{ + return tu_gem_info(dev, gem_handle, 0); +} + +/** Return UINT64_MAX on error. */ +uint64_t +tu_gem_info_iova(struct tu_device *dev, uint32_t gem_handle) +{ + return tu_gem_info(dev, gem_handle, MSM_INFO_IOVA); +} diff --git a/src/freedreno/vulkan/tu_gem.c b/src/freedreno/vulkan/tu_gem.c deleted file mode 100644 index b8a4c6f8a98..00000000000 --- a/src/freedreno/vulkan/tu_gem.c +++ /dev/null @@ -1,94 +0,0 @@ -/* - * Copyright © 2018 Google, Inc. - * Copyright © 2015 Intel Corporation - * - * 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 (including the next - * paragraph) 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 -#include -#include - -#include - -#include "tu_private.h" - -#include "xf86drm.h" - -/** - * Return gem handle on success. Return 0 on failure. - */ -uint32_t -tu_gem_new(struct tu_device *dev, uint64_t size, uint32_t flags) -{ - struct drm_msm_gem_new req = { - .size = size, - .flags = flags, - }; - - - int ret = drmCommandWriteRead(dev->physical_device->local_fd, DRM_MSM_GEM_NEW, - &req, sizeof(req)); - if (ret) - return 0; - - return req.handle; -} - -void -tu_gem_close(struct tu_device *dev, uint32_t gem_handle) -{ - struct drm_gem_close req = { - .handle = gem_handle, - }; - - drmIoctl(dev->physical_device->local_fd, DRM_IOCTL_GEM_CLOSE, &req); -} - -/** Return UINT64_MAX on error. */ -static uint64_t -tu_gem_info(struct tu_device *dev, uint32_t gem_handle, uint32_t flags) -{ - struct drm_msm_gem_info req = { - .handle = gem_handle, - .flags = flags, - }; - - int ret = drmCommandWriteRead(dev->physical_device->local_fd, DRM_MSM_GEM_INFO, - &req, sizeof(req)); - if (ret == -1) - return UINT64_MAX; - - return req.offset; -} - -/** Return UINT64_MAX on error. */ -uint64_t -tu_gem_info_offset(struct tu_device *dev, uint32_t gem_handle) -{ - return tu_gem_info(dev, gem_handle, 0); -} - -/** Return UINT64_MAX on error. */ -uint64_t -tu_gem_info_iova(struct tu_device *dev, uint32_t gem_handle) -{ - return tu_gem_info(dev, gem_handle, MSM_INFO_IOVA); -}