intel: Add pointer to device object in debug structure
The validation layer (debug object attached to intel_base.dbg)
need to know what device is being used to issue debug log messages.
Code now passes intel_dev pointer as part of creating the object.
diff --git a/icd/intel/obj.c b/icd/intel/obj.c
index 041c091..1481b63 100644
--- a/icd/intel/obj.c
+++ b/icd/intel/obj.c
@@ -24,6 +24,7 @@
#include "dispatch_tables.h"
#include "gpu.h"
+#include "dev.h"
#include "obj.h"
/**
@@ -101,6 +102,10 @@
shallow_copy = sizeof(XGL_IMAGE_CREATE_INFO);
break;
default:
+ // log debug message regarding invalid struct_type?
+ intel_dev_log(dbg->dev, XGL_DBG_MSG_ERROR,
+ XGL_VALIDATION_LEVEL_0, XGL_NULL_HANDLE, 0, 0,
+ "Invalid Create Info type: 0x%x", info.header->struct_type);
return false;
break;
}
@@ -164,7 +169,8 @@
* Create an intel_base_dbg. When dbg_size is non-zero, a buffer of that
* size is allocated and zeroed.
*/
-struct intel_base_dbg *intel_base_dbg_create(XGL_DBG_OBJECT_TYPE type,
+struct intel_base_dbg *intel_base_dbg_create(struct intel_dev *dev,
+ XGL_DBG_OBJECT_TYPE type,
const void *create_info,
XGL_SIZE dbg_size)
{
@@ -183,6 +189,7 @@
dbg->alloc_id = icd_get_allocator_id();
dbg->type = type;
+ dbg->dev = dev;
if (!base_dbg_copy_create_info(dbg, create_info)) {
icd_free(dbg);
@@ -207,7 +214,8 @@
* Create an intel_base. obj_size and dbg_size specify the real sizes of the
* object and the debug metadata. Memories are zeroed.
*/
-struct intel_base *intel_base_create(XGL_SIZE obj_size, bool debug,
+struct intel_base *intel_base_create(struct intel_dev *dev,
+ XGL_SIZE obj_size, bool debug,
XGL_DBG_OBJECT_TYPE type,
const void *create_info,
XGL_SIZE dbg_size)
@@ -223,11 +231,19 @@
if (!base)
return NULL;
+ if (dev == NULL) {
+ /*
+ * dev is NULL when we are creating the base device object
+ * Set dev now so that debug setup happens correctly
+ */
+ dev = (struct intel_dev *) base;
+ }
+
memset(base, 0, obj_size);
if (debug) {
base->dispatch = &intel_debug_dispatch_table;
- base->dbg = intel_base_dbg_create(type, create_info, dbg_size);
+ base->dbg = intel_base_dbg_create(dev, type, create_info, dbg_size);
if (!base->dbg) {
icd_free(base);
return NULL;