diff options
author | Dave Airlie <airlied@gmail.com> | 2013-08-23 12:21:23 +1000 |
---|---|---|
committer | Dave Airlie <airlied@redhat.com> | 2013-09-03 15:11:35 +1000 |
commit | 47b99673453dcce43dc8114e7472f54f7cc2ba07 (patch) | |
tree | 181d015ad45753b4bb2e8f9178f2eb1220103583 | |
parent | 6a56972b445c835e92aef9ffb105436b0d048537 (diff) |
virgl: add support for passing comm name to renderer
-rw-r--r-- | drivers/gpu/drm/virgl/virgl_3d.c | 6 | ||||
-rw-r--r-- | drivers/gpu/drm/virgl/virgl_drv.h | 2 | ||||
-rw-r--r-- | drivers/gpu/drm/virgl/virgl_hw.h | 7 | ||||
-rw-r--r-- | drivers/gpu/drm/virgl/virgl_kms.c | 8 |
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; |