Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
Network
Krfb
Commits
8f0de624
Commit
8f0de624
authored
May 21, 2021
by
Jan Grulich
Browse files
Add dma-buf defines to build dma-buf support everywhere
parent
028ac099
Changes
2
Hide whitespace changes
Inline
Side-by-side
framebuffers/pipewire/CMakeLists.txt
View file @
8f0de624
...
...
@@ -33,12 +33,6 @@ add_library(krfb_framebuffer_pw
${
krfb_framebuffer_pw_SRCS
}
)
check_include_file
(
"linux/dma-buf.h"
HAVE_LINUX_DMABUF_H
)
if
(
HAVE_LINUX_DMABUF_H
)
target_compile_definitions
(
krfb_framebuffer_pw PRIVATE -DHAVE_LINUX_DMABUF_H
)
endif
()
target_link_libraries
(
krfb_framebuffer_pw
Qt5::Core
Qt5::Gui
...
...
framebuffers/pipewire/pw_framebuffer.cpp
View file @
8f0de624
...
...
@@ -23,9 +23,6 @@
#endif
// pipewire
#ifdef HAVE_LINUX_DMABUF_H
#include <linux/dma-buf.h>
#endif
#include <sys/ioctl.h>
#include <spa/param/format-utils.h>
...
...
@@ -42,6 +39,17 @@
#include "xdp_dbus_remotedesktop_interface.h"
#include "krfb_fb_pipewire_debug.h"
// static
struct
dma_buf_sync
{
uint64_t
flags
;
};
#define DMA_BUF_SYNC_READ (1 << 0)
#define DMA_BUF_SYNC_START (0 << 2)
#define DMA_BUF_SYNC_END (1 << 2)
#define DMA_BUF_BASE 'b'
#define DMA_BUF_IOCTL_SYNC _IOW(DMA_BUF_BASE, 0, struct dma_buf_sync)
static
const
uint
MIN_SUPPORTED_XDP_KDE_SC_VERSION
=
1
;
Q_DECLARE_METATYPE
(
PWFrameBuffer
::
Stream
);
...
...
@@ -536,7 +544,6 @@ void PWFrameBuffer::Private::onStreamProcess(void *data)
pw_stream_queue_buffer
(
d
->
pwStream
,
buf
);
}
#if defined(HAVE_LINUX_DMABUF_H)
static
void
syncDmaBuf
(
int
fd
,
uint64_t
start_or_end
)
{
struct
dma_buf_sync
sync
=
{
0
};
...
...
@@ -555,7 +562,6 @@ static void syncDmaBuf(int fd, uint64_t start_or_end)
}
}
}
#endif
void
PWFrameBuffer
::
Private
::
handleFrame
(
pw_buffer
*
pwBuffer
)
{
...
...
@@ -570,7 +576,6 @@ void PWFrameBuffer::Private::handleFrame(pw_buffer *pwBuffer)
const
quint32
maxSize
=
spaBuffer
->
datas
[
0
].
maxsize
;
std
::
function
<
void
()
>
cleanup
;
#ifdef HAVE_LINUX_DMABUF_H
if
(
spaBuffer
->
datas
->
type
==
SPA_DATA_DmaBuf
)
{
const
int
fd
=
spaBuffer
->
datas
[
0
].
fd
;
auto
map
=
mmap
(
...
...
@@ -588,9 +593,7 @@ void PWFrameBuffer::Private::handleFrame(pw_buffer *pwBuffer)
syncDmaBuf
(
fd
,
DMA_BUF_SYNC_END
);
munmap
(
map
,
spaBuffer
->
datas
[
0
].
maxsize
+
spaBuffer
->
datas
[
0
].
mapoffset
);
};
}
else
#endif
if
(
spaBuffer
->
datas
->
type
==
SPA_DATA_MemFd
)
{
}
else
if
(
spaBuffer
->
datas
->
type
==
SPA_DATA_MemFd
)
{
uint8_t
*
map
=
static_cast
<
uint8_t
*>
(
mmap
(
nullptr
,
spaBuffer
->
datas
->
maxsize
+
spaBuffer
->
datas
->
mapoffset
,
PROT_READ
,
MAP_PRIVATE
,
spaBuffer
->
datas
->
fd
,
0
));
...
...
Jan Grulich
@grulich
mentioned in commit
4f286141
·
May 21, 2021
mentioned in commit
4f286141
mentioned in commit 4f2861415a472a498cab3a3dc4c040a041706c73
Toggle commit list
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment