Re: [Mesa-dev] [PATCH] i965: Don't leak gen_spec from INTEL_DEBUG=bat handling.

2017-03-23 Thread Kenneth Graunke
On Wednesday, March 22, 2017 10:35:50 PM PDT Jason Ekstrand wrote:
> Is the whole spec really a flat thing you an free with a single free()?  If 
> not, maybe we should consider pulling in ralloc to help out.

You're right, this patch is totally bogus.  ralloc sounds appropriate.


signature.asc
Description: This is a digitally signed message part.
___
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev


Re: [Mesa-dev] [PATCH] i965: Don't leak gen_spec from INTEL_DEBUG=bat handling.

2017-03-22 Thread Jason Ekstrand
Is the whole spec really a flat thing you an free with a single free()?  If 
not, maybe we should consider pulling in ralloc to help out.



On March 22, 2017 22:25:40 Kenneth Graunke  wrote:


We were loading the XML descriptions on every batchbuffer and leaking
them each time.  Now, we load it once at screen init time and free it
at screen destroy time.  Caught by Coverity.

CID: 1403203
---
 src/mesa/drivers/dri/i965/intel_batchbuffer.c | 2 +-
 src/mesa/drivers/dri/i965/intel_screen.c  | 8 
 src/mesa/drivers/dri/i965/intel_screen.h  | 4 
 3 files changed, 13 insertions(+), 1 deletion(-)

diff --git a/src/mesa/drivers/dri/i965/intel_batchbuffer.c 
b/src/mesa/drivers/dri/i965/intel_batchbuffer.c

index 49a00c12ba2..e3fb071300c 100644
--- a/src/mesa/drivers/dri/i965/intel_batchbuffer.c
+++ b/src/mesa/drivers/dri/i965/intel_batchbuffer.c
@@ -202,7 +202,7 @@ static void
 do_batch_dump(struct brw_context *brw)
 {
struct intel_batchbuffer *batch = >batch;
-   struct gen_spec *spec = gen_spec_load(>screen->devinfo);
+   struct gen_spec *spec = brw->screen->decoder_spec;

if (batch->ring != RENDER_RING)
   return;
diff --git a/src/mesa/drivers/dri/i965/intel_screen.c 
b/src/mesa/drivers/dri/i965/intel_screen.c

index c7f111d04af..c8c6698a756 100644
--- a/src/mesa/drivers/dri/i965/intel_screen.c
+++ b/src/mesa/drivers/dri/i965/intel_screen.c
@@ -38,6 +38,7 @@
 #include "util/ralloc.h"
 #include "brw_defines.h"
 #include "compiler/nir/nir.h"
+#include "common/gen_decoder.h"

 #include "utils.h"
 #include "xmlpool.h"
@@ -1106,6 +1107,8 @@ intelDestroyScreen(__DRIscreen * sPriv)
dri_bufmgr_destroy(screen->bufmgr);
driDestroyOptionInfo(>optionCache);

+   free(screen->decoder_spec);
+
ralloc_free(screen);
sPriv->driverPrivate = NULL;
 }
@@ -1764,6 +1767,11 @@ __DRIconfig **intelInitScreen2(__DRIscreen *dri_screen)

brw_process_intel_debug_variable();

+#ifdef DEBUG
+   if (INTEL_DEBUG & DEBUG_BATCH)
+  screen->decoder_spec = gen_spec_load(devinfo);
+#endif
+
if (INTEL_DEBUG & DEBUG_BUFMGR)
   dri_bufmgr_set_debug(screen->bufmgr, true);

diff --git a/src/mesa/drivers/dri/i965/intel_screen.h 
b/src/mesa/drivers/dri/i965/intel_screen.h

index d8cda58c964..29ce94d6756 100644
--- a/src/mesa/drivers/dri/i965/intel_screen.h
+++ b/src/mesa/drivers/dri/i965/intel_screen.h
@@ -41,6 +41,8 @@
 extern "C" {
 #endif

+struct gen_spec;
+
 struct intel_screen
 {
int deviceID;
@@ -103,6 +105,8 @@ struct intel_screen
 * Number of EUs reported by the I915_PARAM_EU_TOTAL parameter
 */
int eu_total;
+
+   struct gen_spec *decoder_spec;
 };

 extern void intelDestroyContext(__DRIcontext * driContextPriv);
--
2.12.0

___
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev



___
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev


[Mesa-dev] [PATCH] i965: Don't leak gen_spec from INTEL_DEBUG=bat handling.

2017-03-22 Thread Kenneth Graunke
We were loading the XML descriptions on every batchbuffer and leaking
them each time.  Now, we load it once at screen init time and free it
at screen destroy time.  Caught by Coverity.

CID: 1403203
---
 src/mesa/drivers/dri/i965/intel_batchbuffer.c | 2 +-
 src/mesa/drivers/dri/i965/intel_screen.c  | 8 
 src/mesa/drivers/dri/i965/intel_screen.h  | 4 
 3 files changed, 13 insertions(+), 1 deletion(-)

diff --git a/src/mesa/drivers/dri/i965/intel_batchbuffer.c 
b/src/mesa/drivers/dri/i965/intel_batchbuffer.c
index 49a00c12ba2..e3fb071300c 100644
--- a/src/mesa/drivers/dri/i965/intel_batchbuffer.c
+++ b/src/mesa/drivers/dri/i965/intel_batchbuffer.c
@@ -202,7 +202,7 @@ static void
 do_batch_dump(struct brw_context *brw)
 {
struct intel_batchbuffer *batch = >batch;
-   struct gen_spec *spec = gen_spec_load(>screen->devinfo);
+   struct gen_spec *spec = brw->screen->decoder_spec;
 
if (batch->ring != RENDER_RING)
   return;
diff --git a/src/mesa/drivers/dri/i965/intel_screen.c 
b/src/mesa/drivers/dri/i965/intel_screen.c
index c7f111d04af..c8c6698a756 100644
--- a/src/mesa/drivers/dri/i965/intel_screen.c
+++ b/src/mesa/drivers/dri/i965/intel_screen.c
@@ -38,6 +38,7 @@
 #include "util/ralloc.h"
 #include "brw_defines.h"
 #include "compiler/nir/nir.h"
+#include "common/gen_decoder.h"
 
 #include "utils.h"
 #include "xmlpool.h"
@@ -1106,6 +1107,8 @@ intelDestroyScreen(__DRIscreen * sPriv)
dri_bufmgr_destroy(screen->bufmgr);
driDestroyOptionInfo(>optionCache);
 
+   free(screen->decoder_spec);
+
ralloc_free(screen);
sPriv->driverPrivate = NULL;
 }
@@ -1764,6 +1767,11 @@ __DRIconfig **intelInitScreen2(__DRIscreen *dri_screen)
 
brw_process_intel_debug_variable();
 
+#ifdef DEBUG
+   if (INTEL_DEBUG & DEBUG_BATCH)
+  screen->decoder_spec = gen_spec_load(devinfo);
+#endif
+
if (INTEL_DEBUG & DEBUG_BUFMGR)
   dri_bufmgr_set_debug(screen->bufmgr, true);
 
diff --git a/src/mesa/drivers/dri/i965/intel_screen.h 
b/src/mesa/drivers/dri/i965/intel_screen.h
index d8cda58c964..29ce94d6756 100644
--- a/src/mesa/drivers/dri/i965/intel_screen.h
+++ b/src/mesa/drivers/dri/i965/intel_screen.h
@@ -41,6 +41,8 @@
 extern "C" {
 #endif
 
+struct gen_spec;
+
 struct intel_screen
 {
int deviceID;
@@ -103,6 +105,8 @@ struct intel_screen
 * Number of EUs reported by the I915_PARAM_EU_TOTAL parameter
 */
int eu_total;
+
+   struct gen_spec *decoder_spec;
 };
 
 extern void intelDestroyContext(__DRIcontext * driContextPriv);
-- 
2.12.0

___
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev