On 01/07/15 01:01, Samuel Pitoiset wrote:
This will allow to monitor global performance counters through the
command stream of the GPU instead of using ioctls.

Signed-off-by: Samuel Pitoiset <samuel.pitoi...@gmail.com>
---
  src/gallium/drivers/nouveau/nv50/nv50_screen.c | 11 +++++++++++
  src/gallium/drivers/nouveau/nv50/nv50_screen.h |  1 +
  src/gallium/drivers/nouveau/nv50/nv50_winsys.h |  1 +
  3 files changed, 13 insertions(+)

diff --git a/src/gallium/drivers/nouveau/nv50/nv50_screen.c 
b/src/gallium/drivers/nouveau/nv50/nv50_screen.c
index 6583a35..c985344 100644
--- a/src/gallium/drivers/nouveau/nv50/nv50_screen.c
+++ b/src/gallium/drivers/nouveau/nv50/nv50_screen.c
@@ -367,6 +367,7 @@ nv50_screen_destroy(struct pipe_screen *pscreen)
     nouveau_object_del(&screen->eng2d);
     nouveau_object_del(&screen->m2mf);
     nouveau_object_del(&screen->sync);
+   nouveau_object_del(&screen->sw);
nouveau_screen_fini(&screen->base); @@ -437,6 +438,9 @@ nv50_screen_init_hwctx(struct nv50_screen *screen)
     BEGIN_NV04(push, SUBC_3D(NV01_SUBCHAN_OBJECT), 1);
     PUSH_DATA (push, screen->tesla->handle);
+ BEGIN_NV04(push, SUBC_SW(NV01_SUBCHAN_OBJECT), 1);
+   PUSH_DATA (push, screen->sw->handle);
+
     BEGIN_NV04(push, NV50_3D(COND_MODE), 1);
     PUSH_DATA (push, NV50_3D_COND_MODE_ALWAYS);
@@ -768,6 +772,13 @@ nv50_screen_create(struct nouveau_device *dev)
        goto fail;
     }
+ ret = nouveau_object_new(chan, 0xbeef506e, 0x506e,
I guess the 0x506e needs to be defined in libdrm, right?

Other than that, it is Reviewed-by: Martin Peres <martin.pe...@free.fr>
+                            NULL, 0, &screen->sw);
+   if (ret) {
+      NOUVEAU_ERR("Failed to allocate SW object: %d\n", ret);
+      goto fail;
+   }
+
     ret = nouveau_object_new(chan, 0xbeef5039, NV50_M2MF_CLASS,
                              NULL, 0, &screen->m2mf);
     if (ret) {
diff --git a/src/gallium/drivers/nouveau/nv50/nv50_screen.h 
b/src/gallium/drivers/nouveau/nv50/nv50_screen.h
index 881051b..69fdfdb 100644
--- a/src/gallium/drivers/nouveau/nv50/nv50_screen.h
+++ b/src/gallium/drivers/nouveau/nv50/nv50_screen.h
@@ -93,6 +93,7 @@ struct nv50_screen {
     struct nouveau_object *tesla;
     struct nouveau_object *eng2d;
     struct nouveau_object *m2mf;
+   struct nouveau_object *sw;
  };
static INLINE struct nv50_screen *
diff --git a/src/gallium/drivers/nouveau/nv50/nv50_winsys.h 
b/src/gallium/drivers/nouveau/nv50/nv50_winsys.h
index e8578c8..5cb33ef 100644
--- a/src/gallium/drivers/nouveau/nv50/nv50_winsys.h
+++ b/src/gallium/drivers/nouveau/nv50/nv50_winsys.h
@@ -60,6 +60,7 @@ PUSH_REFN(struct nouveau_pushbuf *push, struct nouveau_bo 
*bo, uint32_t flags)
  #define SUBC_COMPUTE(m) 6, (m)
  #define NV50_COMPUTE(n) SUBC_COMPUTE(NV50_COMPUTE_##n)
+#define SUBC_SW(m) 7, (m) static INLINE uint32_t
  NV50_FIFO_PKHDR(int subc, int mthd, unsigned size)

_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to