summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDave Airlie <airlied@gmail.com>2013-08-23 12:21:23 +1000
committerDave Airlie <airlied@redhat.com>2013-09-03 15:11:35 +1000
commit47b99673453dcce43dc8114e7472f54f7cc2ba07 (patch)
tree181d015ad45753b4bb2e8f9178f2eb1220103583
parent6a56972b445c835e92aef9ffb105436b0d048537 (diff)
virgl: add support for passing comm name to renderer
-rw-r--r--drivers/gpu/drm/virgl/virgl_3d.c6
-rw-r--r--drivers/gpu/drm/virgl/virgl_drv.h2
-rw-r--r--drivers/gpu/drm/virgl/virgl_hw.h7
-rw-r--r--drivers/gpu/drm/virgl/virgl_kms.c8
4 files changed, 18 insertions, 5 deletions
diff --git a/drivers/gpu/drm/virgl/virgl_3d.c b/drivers/gpu/drm/virgl/virgl_3d.c
index b2e0fd8edba7..0533639fa9e8 100644
--- a/drivers/gpu/drm/virgl/virgl_3d.c
+++ b/drivers/gpu/drm/virgl/virgl_3d.c
@@ -945,7 +945,7 @@ int virgl_irq_init(struct virgl_device *qdev)
}
-int virgl_context_create(struct virgl_device *qdev, uint32_t *id)
+int virgl_context_create(struct virgl_device *qdev, uint32_t nlen, const char *name, uint32_t *id)
{
struct virgl_command *cmd_p;
struct virgl_vbuffer *vbuf;
@@ -961,7 +961,9 @@ int virgl_context_create(struct virgl_device *qdev, uint32_t *id)
return PTR_ERR(cmd_p);
cmd_p->type = VIRGL_CMD_CREATE_CONTEXT;
- cmd_p->u.ctx.handle = handle;
+ cmd_p->u.ctx_create.handle = handle;
+ cmd_p->u.ctx_create.nlen = nlen;
+ strncpy(cmd_p->u.ctx_create.debug_name, name, min(64, nlen + 1));
virgl_queue_cmd_buf(qdev, vbuf);
*id = handle;
diff --git a/drivers/gpu/drm/virgl/virgl_drv.h b/drivers/gpu/drm/virgl/virgl_drv.h
index 5791f66b16d9..a49a24ccf10b 100644
--- a/drivers/gpu/drm/virgl/virgl_drv.h
+++ b/drivers/gpu/drm/virgl/virgl_drv.h
@@ -337,7 +337,7 @@ int virgl_3d_dirty_front(struct virgl_device *qdev,
int width, int height);
int virgl_3d_surface_dirty(struct virgl_framebuffer *qfb, struct drm_clip_rect *clips,
unsigned num_clips);
-int virgl_context_create(struct virgl_device *qdev, uint32_t *id);
+int virgl_context_create(struct virgl_device *qdev, uint32_t nlen, const char *name, uint32_t *id);
int virgl_context_destroy(struct virgl_device *qdev, uint32_t id);
int virgl_context_bind_resource(struct virgl_device *qdev, uint32_t ctx_id,
uint32_t res_handle);
diff --git a/drivers/gpu/drm/virgl/virgl_hw.h b/drivers/gpu/drm/virgl/virgl_hw.h
index 3905e8896923..63a9c5cd2171 100644
--- a/drivers/gpu/drm/virgl/virgl_hw.h
+++ b/drivers/gpu/drm/virgl/virgl_hw.h
@@ -92,6 +92,12 @@ struct virgl_cmd_context {
uint32_t pad;
};
+struct virgl_cmd_context_create {
+ uint32_t handle;
+ uint32_t nlen;
+ char debug_name[64];
+};
+
struct virgl_cmd_resource_context {
uint32_t res_handle;
uint32_t ctx_id;
@@ -120,6 +126,7 @@ struct virgl_command {
uint64_t fence_id;
union virgl_cmds {
struct virgl_cmd_context ctx;
+ struct virgl_cmd_context_create ctx_create;
struct virgl_resource_create res_create;
struct virgl_transfer_put transfer_put;
struct virgl_transfer_get transfer_get;
diff --git a/drivers/gpu/drm/virgl/virgl_kms.c b/drivers/gpu/drm/virgl/virgl_kms.c
index d7325e219ecb..f3bb0e0af7b6 100644
--- a/drivers/gpu/drm/virgl/virgl_kms.c
+++ b/drivers/gpu/drm/virgl/virgl_kms.c
@@ -145,13 +145,17 @@ int virgl_driver_open(struct drm_device *dev, struct drm_file *fpriv)
struct virgl_fpriv *vfpriv;
uint32_t id;
int ret;
-
+ char dbgname[64], tmpname[TASK_COMM_LEN];
+
+ get_task_comm(tmpname, current);
+ snprintf(dbgname, sizeof(dbgname), "%s", tmpname);
+ dbgname[63] = 0;
/* allocate a virt GPU context for this opener */
vfpriv = kzalloc(sizeof(*fpriv), GFP_KERNEL);
if (!vfpriv)
return -ENOMEM;
- ret = virgl_context_create(qdev, &id);
+ ret = virgl_context_create(qdev, strlen(dbgname), dbgname, &id);
if (ret) {
kfree(vfpriv);
return ret;