aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordec05eba <dec05eba@protonmail.com>2025-05-27 16:04:12 +0200
committerdec05eba <dec05eba@protonmail.com>2025-05-27 16:04:12 +0200
commit131209ddc04253fdb37564c576ba2e2350d2c45b (patch)
tree680ec0767fba48cad36b83c979a2709489aad0e6
parentb2487788c2f9c0e73ebf6271bab6598be44e7cbb (diff)
Minor cleanup
-rw-r--r--src/utils.c115
1 files changed, 47 insertions, 68 deletions
diff --git a/src/utils.c b/src/utils.c
index e5ad4fe..27116a0 100644
--- a/src/utils.c
+++ b/src/utils.c
@@ -508,6 +508,41 @@ int create_directory_recursive(char *path) {
}
void setup_dma_buf_attrs(intptr_t *img_attr, uint32_t format, uint32_t width, uint32_t height, const int *fds, const uint32_t *offsets, const uint32_t *pitches, const uint64_t *modifiers, int num_planes, bool use_modifier) {
+ const uint32_t plane_fd_attrs[4] = {
+ EGL_DMA_BUF_PLANE0_FD_EXT,
+ EGL_DMA_BUF_PLANE1_FD_EXT,
+ EGL_DMA_BUF_PLANE2_FD_EXT,
+ EGL_DMA_BUF_PLANE3_FD_EXT
+ };
+
+ const uint32_t plane_offset_attrs[4] = {
+ EGL_DMA_BUF_PLANE0_OFFSET_EXT,
+ EGL_DMA_BUF_PLANE1_OFFSET_EXT,
+ EGL_DMA_BUF_PLANE2_OFFSET_EXT,
+ EGL_DMA_BUF_PLANE3_OFFSET_EXT
+ };
+
+ const uint32_t plane_pitch_attrs[4] = {
+ EGL_DMA_BUF_PLANE0_PITCH_EXT,
+ EGL_DMA_BUF_PLANE1_PITCH_EXT,
+ EGL_DMA_BUF_PLANE2_PITCH_EXT,
+ EGL_DMA_BUF_PLANE3_PITCH_EXT
+ };
+
+ const uint32_t plane_modifier_lo_attrs[4] = {
+ EGL_DMA_BUF_PLANE0_MODIFIER_LO_EXT,
+ EGL_DMA_BUF_PLANE1_MODIFIER_LO_EXT,
+ EGL_DMA_BUF_PLANE2_MODIFIER_LO_EXT,
+ EGL_DMA_BUF_PLANE3_MODIFIER_LO_EXT
+ };
+
+ const uint32_t plane_modifier_hi_attrs[4] = {
+ EGL_DMA_BUF_PLANE0_MODIFIER_HI_EXT,
+ EGL_DMA_BUF_PLANE1_MODIFIER_HI_EXT,
+ EGL_DMA_BUF_PLANE2_MODIFIER_HI_EXT,
+ EGL_DMA_BUF_PLANE3_MODIFIER_HI_EXT
+ };
+
size_t img_attr_index = 0;
img_attr[img_attr_index++] = EGL_LINUX_DRM_FOURCC_EXT;
@@ -519,79 +554,23 @@ void setup_dma_buf_attrs(intptr_t *img_attr, uint32_t format, uint32_t width, ui
img_attr[img_attr_index++] = EGL_HEIGHT;
img_attr[img_attr_index++] = height;
- if(num_planes >= 1) {
- img_attr[img_attr_index++] = EGL_DMA_BUF_PLANE0_FD_EXT;
- img_attr[img_attr_index++] = fds[0];
-
- img_attr[img_attr_index++] = EGL_DMA_BUF_PLANE0_OFFSET_EXT;
- img_attr[img_attr_index++] = offsets[0];
-
- img_attr[img_attr_index++] = EGL_DMA_BUF_PLANE0_PITCH_EXT;
- img_attr[img_attr_index++] = pitches[0];
-
- if(use_modifier) {
- img_attr[img_attr_index++] = EGL_DMA_BUF_PLANE0_MODIFIER_LO_EXT;
- img_attr[img_attr_index++] = modifiers[0] & 0xFFFFFFFFULL;
-
- img_attr[img_attr_index++] = EGL_DMA_BUF_PLANE0_MODIFIER_HI_EXT;
- img_attr[img_attr_index++] = modifiers[0] >> 32ULL;
- }
- }
-
- if(num_planes >= 2) {
- img_attr[img_attr_index++] = EGL_DMA_BUF_PLANE1_FD_EXT;
- img_attr[img_attr_index++] = fds[1];
-
- img_attr[img_attr_index++] = EGL_DMA_BUF_PLANE1_OFFSET_EXT;
- img_attr[img_attr_index++] = offsets[1];
-
- img_attr[img_attr_index++] = EGL_DMA_BUF_PLANE1_PITCH_EXT;
- img_attr[img_attr_index++] = pitches[1];
-
- if(use_modifier) {
- img_attr[img_attr_index++] = EGL_DMA_BUF_PLANE1_MODIFIER_LO_EXT;
- img_attr[img_attr_index++] = modifiers[1] & 0xFFFFFFFFULL;
-
- img_attr[img_attr_index++] = EGL_DMA_BUF_PLANE1_MODIFIER_HI_EXT;
- img_attr[img_attr_index++] = modifiers[1] >> 32ULL;
- }
- }
-
- if(num_planes >= 3) {
- img_attr[img_attr_index++] = EGL_DMA_BUF_PLANE2_FD_EXT;
- img_attr[img_attr_index++] = fds[2];
-
- img_attr[img_attr_index++] = EGL_DMA_BUF_PLANE2_OFFSET_EXT;
- img_attr[img_attr_index++] = offsets[2];
-
- img_attr[img_attr_index++] = EGL_DMA_BUF_PLANE2_PITCH_EXT;
- img_attr[img_attr_index++] = pitches[2];
-
- if(use_modifier) {
- img_attr[img_attr_index++] = EGL_DMA_BUF_PLANE2_MODIFIER_LO_EXT;
- img_attr[img_attr_index++] = modifiers[2] & 0xFFFFFFFFULL;
-
- img_attr[img_attr_index++] = EGL_DMA_BUF_PLANE2_MODIFIER_HI_EXT;
- img_attr[img_attr_index++] = modifiers[2] >> 32ULL;
- }
- }
-
- if(num_planes >= 4) {
- img_attr[img_attr_index++] = EGL_DMA_BUF_PLANE3_FD_EXT;
- img_attr[img_attr_index++] = fds[3];
+ assert(num_planes <= 4);
+ for(int i = 0; i < num_planes; ++i) {
+ img_attr[img_attr_index++] = plane_fd_attrs[i];
+ img_attr[img_attr_index++] = fds[i];
- img_attr[img_attr_index++] = EGL_DMA_BUF_PLANE3_OFFSET_EXT;
- img_attr[img_attr_index++] = offsets[3];
+ img_attr[img_attr_index++] = plane_offset_attrs[i];
+ img_attr[img_attr_index++] = offsets[i];
- img_attr[img_attr_index++] = EGL_DMA_BUF_PLANE3_PITCH_EXT;
- img_attr[img_attr_index++] = pitches[3];
+ img_attr[img_attr_index++] = plane_pitch_attrs[i];
+ img_attr[img_attr_index++] = pitches[i];
if(use_modifier) {
- img_attr[img_attr_index++] = EGL_DMA_BUF_PLANE3_MODIFIER_LO_EXT;
- img_attr[img_attr_index++] = modifiers[3] & 0xFFFFFFFFULL;
+ img_attr[img_attr_index++] = plane_modifier_lo_attrs[i];
+ img_attr[img_attr_index++] = modifiers[i] & 0xFFFFFFFFULL;
- img_attr[img_attr_index++] = EGL_DMA_BUF_PLANE3_MODIFIER_HI_EXT;
- img_attr[img_attr_index++] = modifiers[3] >> 32ULL;
+ img_attr[img_attr_index++] = plane_modifier_hi_attrs[i];
+ img_attr[img_attr_index++] = modifiers[i] >> 32ULL;
}
}