All of lore.kernel.org
 help / color / mirror / Atom feed
* Clean up of nv40_context->state.hw and nv40_screen->state
@ 2009-12-21  7:34 Krzysztof Smiechowicz
       [not found] ` <4B2F251B.5070807-5tc4TXWwyLM@public.gmane.org>
  0 siblings, 1 reply; 2+ messages in thread
From: Krzysztof Smiechowicz @ 2009-12-21  7:34 UTC (permalink / raw)
  To: nouveau-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW

Hi,

I'm trying to find a place where objects held in 
nv40_context->state.hw[] and nv40_screen->state[] are being unreferenced 
during pipe_context destruction.

Currently I'm observing that these objects are not unreferenced and 
since they hold reference to buffer objects, the buffer objects 
themselves are not unreferenced as well (for example color buffer or z 
buffer).

In order to clean those references I applied the following changes:

Index: nv40_screen.c
===================================================================
--- nv40_screen.c	(wersja 32083)
+++ nv40_screen.c	(kopia robocza)
@@ -140,7 +140,13 @@
  nv40_screen_destroy(struct pipe_screen *pscreen)
  {
  	struct nv40_screen *screen = nv40_screen(pscreen);
+    unsigned i;

+    for (i = 0; i < NV40_STATE_MAX; i++) {
+        if (screen->state[i])
+            so_ref(NULL, &screen->state[i]);
+    }
+
  	nouveau_resource_free(&screen->vp_exec_heap);
  	nouveau_resource_free(&screen->vp_data_heap);
  	nouveau_resource_free(&screen->query_heap);
Index: nv40_context.c
===================================================================
--- nv40_context.c	(wersja 32083)
+++ nv40_context.c	(kopia robocza)
@@ -25,7 +25,13 @@
  nv40_destroy(struct pipe_context *pipe)
  {
  	struct nv40_context *nv40 = nv40_context(pipe);
+    unsigned i;

+    for (i = 0; i < NV40_STATE_MAX; i++) {
+        if (nv40->state.hw[i])
+            so_ref(NULL, &nv40->state.hw[i]);
+    }
+
  	if (nv40->draw)
  		draw_destroy(nv40->draw);
  	FREE(nv40);


Is this the correct approach or did I miss where those objects are 
unreferenced?

Best regards,
Krzysztof

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2009-12-21  9:57 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-12-21  7:34 Clean up of nv40_context->state.hw and nv40_screen->state Krzysztof Smiechowicz
     [not found] ` <4B2F251B.5070807-5tc4TXWwyLM@public.gmane.org>
2009-12-21  9:57   ` Krzysztof Smiechowicz

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.