Skip to content

Instantly share code, notes, and snippets.

@carlocaione
Created February 25, 2015 14:08
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save carlocaione/6c861a5b4ad39655c149 to your computer and use it in GitHub Desktop.
Save carlocaione/6c861a5b4ad39655c149 to your computer and use it in GitHub Desktop.
From ba460ffbe15a419c5fa3e207fc7999a030fffd12 Mon Sep 17 00:00:00 2001
From: Carlo Caione <carlo@endlessm.com>
Date: Wed, 25 Feb 2015 14:44:08 +0100
Subject: [PATCH] Test
Signed-off-by: Carlo Caione <carlo@endlessm.com>
---
src/plugins/renderers/drm/plugin.c | 28 ++++++++++++++++++++++
.../renderers/drm/ply-renderer-generic-driver.c | 28 ++++++++++++++++++++++
.../renderers/drm/ply-renderer-generic-driver.h | 2 ++
3 files changed, 58 insertions(+)
diff --git a/src/plugins/renderers/drm/plugin.c b/src/plugins/renderers/drm/plugin.c
index 6677279..8f1eb2e 100644
--- a/src/plugins/renderers/drm/plugin.c
+++ b/src/plugins/renderers/drm/plugin.c
@@ -41,6 +41,7 @@
#include <sys/types.h>
#include <values.h>
#include <unistd.h>
+#include <time.h>
#include <drm.h>
#include <xf86drm.h>
@@ -250,6 +251,33 @@ ply_renderer_head_map (ply_renderer_backend_t *backend,
assert (head != NULL);
+ {
+ uint32_t buffer_id;
+
+ ply_trace ("========================================================\n");
+
+ buffer_id = backend->driver_interface->create_buffer (backend->driver,
+ head->area.width, head->area.height,
+ &head->row_stride);
+ if (buffer_id == 0)
+ return false;
+
+ ply_trace ("====== buffer_id: %d\n", buffer_id);
+
+ if (!backend->driver_interface->map_buffer (backend->driver, buffer_id))
+ {
+ backend->driver_interface->destroy_buffer (backend->driver, buffer_id);
+ buffer_id = 0;
+
+ return false;
+ }
+
+ ply_trace ("====== calling map_cursor");
+ map_cursor(backend->driver, buffer_id, head->controller_id);
+
+ ply_trace ("========================================================\n");
+ }
+
ply_trace ("Creating buffer for %ldx%ld renderer head", head->area.width, head->area.height);
head->scan_out_buffer_id =
backend->driver_interface->create_buffer (backend->driver,
diff --git a/src/plugins/renderers/drm/ply-renderer-generic-driver.c b/src/plugins/renderers/drm/ply-renderer-generic-driver.c
index 45a8faa..804e1bd 100644
--- a/src/plugins/renderers/drm/ply-renderer-generic-driver.c
+++ b/src/plugins/renderers/drm/ply-renderer-generic-driver.c
@@ -218,6 +218,34 @@ get_buffer_from_id (ply_renderer_driver_t *driver,
return buffer;
}
+void
+map_cursor(ply_renderer_driver_t *driver, uint32_t buffer_id, uint32_t controller_id)
+{
+ uint8_t r, g, b;
+ ply_renderer_buffer_t *buffer;
+ unsigned int i, off;
+
+ buffer = get_buffer_from_id (driver, buffer_id);
+
+ srand(time(NULL));
+
+ for (i = 0; i < buffer->map_size / 4; i++)
+ {
+ r = rand() % 0xff;
+ g = rand() % 0xff;
+ b = rand() % 0xff;
+
+ off = i * 4;
+ *(uint32_t *)&buffer->map_address[off] = (r << 16) | (g << 8) | b;
+ }
+
+ drmModeSetCursor(driver->device_fd, controller_id, buffer_id,
+ buffer->width, buffer->height);
+
+ ply_trace ("====== device_fd: %d, controller_id: %d\n", driver->device_fd, controller_id);
+
+}
+
static bool
fetch_buffer (ply_renderer_driver_t *driver,
uint32_t buffer_id,
diff --git a/src/plugins/renderers/drm/ply-renderer-generic-driver.h b/src/plugins/renderers/drm/ply-renderer-generic-driver.h
index 053587a..ddc3607 100644
--- a/src/plugins/renderers/drm/ply-renderer-generic-driver.h
+++ b/src/plugins/renderers/drm/ply-renderer-generic-driver.h
@@ -25,6 +25,8 @@
#include "ply-renderer-driver.h"
+void map_cursor(ply_renderer_driver_t *driver, uint32_t buffer_id, uint32_t controller_id);
+
#ifndef PLY_HIDE_FUNCTION_DECLARATIONS
ply_renderer_driver_interface_t *ply_renderer_generic_driver_get_interface (int device_fd);
#endif
--
1.9.1
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment