mirror of
https://gitlab.freedesktop.org/monado/monado.git
synced 2025-01-04 06:06:17 +00:00
aux/vk: Port to using u_handles
This commit is contained in:
parent
129c1a9ac4
commit
e092345292
|
@ -9,15 +9,12 @@
|
||||||
|
|
||||||
#include "util/u_misc.h"
|
#include "util/u_misc.h"
|
||||||
#include "util/u_logging.h"
|
#include "util/u_logging.h"
|
||||||
|
#include "util/u_handles.h"
|
||||||
|
|
||||||
#include "vk/vk_image_allocator.h"
|
#include "vk/vk_image_allocator.h"
|
||||||
|
|
||||||
#include <xrt/xrt_handles.h>
|
#include <xrt/xrt_handles.h>
|
||||||
|
|
||||||
#if defined(XRT_GRAPHICS_BUFFER_HANDLE_IS_AHARDWAREBUFFER)
|
|
||||||
#include <android/hardware_buffer.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef XRT_OS_LINUX
|
#ifdef XRT_OS_LINUX
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#endif
|
#endif
|
||||||
|
@ -236,48 +233,6 @@ vk_ic_allocate(struct vk_bundle *vk,
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if defined(XRT_GRAPHICS_BUFFER_HANDLE_IS_AHARDWAREBUFFER)
|
|
||||||
|
|
||||||
static void
|
|
||||||
release_handle(xrt_graphics_buffer_handle_t handle)
|
|
||||||
{
|
|
||||||
if (handle != NULL) {
|
|
||||||
AHardwareBuffer_release(handle);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static xrt_graphics_buffer_handle_t
|
|
||||||
ref_handle(xrt_graphics_buffer_handle_t handle)
|
|
||||||
{
|
|
||||||
if (handle != NULL) {
|
|
||||||
AHardwareBuffer_acquire(handle);
|
|
||||||
}
|
|
||||||
|
|
||||||
return handle;
|
|
||||||
}
|
|
||||||
|
|
||||||
#elif defined(XRT_GRAPHICS_BUFFER_HANDLE_IS_FD)
|
|
||||||
|
|
||||||
static void
|
|
||||||
release_handle(xrt_graphics_buffer_handle_t handle)
|
|
||||||
{
|
|
||||||
if (handle >= 0) {
|
|
||||||
close(handle);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static xrt_graphics_buffer_handle_t
|
|
||||||
ref_handle(xrt_graphics_buffer_handle_t handle)
|
|
||||||
{
|
|
||||||
if (handle >= 0) {
|
|
||||||
return dup(handle);
|
|
||||||
}
|
|
||||||
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* Imports and set images from the given FDs.
|
* Imports and set images from the given FDs.
|
||||||
*/
|
*/
|
||||||
|
@ -299,13 +254,13 @@ vk_ic_from_natives(struct vk_bundle *vk,
|
||||||
for (; i < num_images; i++) {
|
for (; i < num_images; i++) {
|
||||||
// Ensure that all handles are consumed or none are.
|
// Ensure that all handles are consumed or none are.
|
||||||
xrt_graphics_buffer_handle_t buf =
|
xrt_graphics_buffer_handle_t buf =
|
||||||
ref_handle(native_images[i].handle);
|
u_graphics_buffer_ref(native_images[i].handle);
|
||||||
|
|
||||||
ret = vk_create_image_from_native(vk, xscci, &native_images[i],
|
ret = vk_create_image_from_native(vk, xscci, &native_images[i],
|
||||||
&out_vkic->images[i].handle,
|
&out_vkic->images[i].handle,
|
||||||
&out_vkic->images[i].memory);
|
&out_vkic->images[i].memory);
|
||||||
if (ret != VK_SUCCESS) {
|
if (ret != VK_SUCCESS) {
|
||||||
release_handle(buf);
|
u_graphics_buffer_unref(&buf);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
native_images[i].handle = buf;
|
native_images[i].handle = buf;
|
||||||
|
@ -318,9 +273,7 @@ vk_ic_from_natives(struct vk_bundle *vk,
|
||||||
// We have consumed all handles now, close all of the copies we
|
// We have consumed all handles now, close all of the copies we
|
||||||
// made, all this to make sure we do all or nothing.
|
// made, all this to make sure we do all or nothing.
|
||||||
for (size_t k = 0; k < num_images; k++) {
|
for (size_t k = 0; k < num_images; k++) {
|
||||||
release_handle(native_images[k].handle);
|
u_graphics_buffer_unref(&native_images[k].handle);
|
||||||
native_images[k].handle =
|
|
||||||
XRT_GRAPHICS_BUFFER_HANDLE_INVALID;
|
|
||||||
native_images[k].size = 0;
|
native_images[k].size = 0;
|
||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
|
@ -373,8 +326,7 @@ vk_ic_get_handles(struct vk_bundle *vk,
|
||||||
// succeeded and needs to be closed. If i is zero no call succeeded.
|
// succeeded and needs to be closed. If i is zero no call succeeded.
|
||||||
while (i > 0) {
|
while (i > 0) {
|
||||||
i--;
|
i--;
|
||||||
release_handle(out_handles[i]);
|
u_graphics_buffer_unref(&out_handles[i]);
|
||||||
out_handles[i] = XRT_GRAPHICS_BUFFER_HANDLE_INVALID;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
|
|
Loading…
Reference in a new issue