Module: Mesa
Branch: master
Commit: 501ad0e1341b4f3320aed9a85fc5a24405c88e4d
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=501ad0e1341b4f3320aed9a85fc5a24405c88e4d

Author: Axel Davy <[email protected]>
Date:   Thu May 21 16:55:19 2020 +0200

st/nine: Add new debug and error checks

Add new debug messages and error checks

Signed-off-by: Axel Davy <[email protected]>
Acked-by: Timur Kristóf <[email protected]>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9177>

---

 src/gallium/frontends/nine/basetexture9.c       |  2 ++
 src/gallium/frontends/nine/buffer9.c            |  1 +
 src/gallium/frontends/nine/iunknown.c           | 14 +++++++++++---
 src/gallium/frontends/nine/nine_buffer_upload.c |  5 ++++-
 src/gallium/frontends/nine/surface9.c           |  3 ++-
 src/gallium/frontends/nine/texture9.c           |  2 ++
 6 files changed, 22 insertions(+), 5 deletions(-)

diff --git a/src/gallium/frontends/nine/basetexture9.c 
b/src/gallium/frontends/nine/basetexture9.c
index d0dd4a6d17b..04a78e5e40f 100644
--- a/src/gallium/frontends/nine/basetexture9.c
+++ b/src/gallium/frontends/nine/basetexture9.c
@@ -588,6 +588,8 @@ NineBaseTexture9_PreLoad( struct NineBaseTexture9 *This )
 void
 NineBaseTexture9_UnLoad( struct NineBaseTexture9 *This )
 {
+    DBG("This=%p\n", This);
+
     if (This->base.pool != D3DPOOL_MANAGED ||
         This->managed.lod_resident == -1)
         return;
diff --git a/src/gallium/frontends/nine/buffer9.c 
b/src/gallium/frontends/nine/buffer9.c
index ff017c1c08c..d1368517f11 100644
--- a/src/gallium/frontends/nine/buffer9.c
+++ b/src/gallium/frontends/nine/buffer9.c
@@ -358,6 +358,7 @@ NineBuffer9_Lock( struct NineBuffer9 *This,
             This->maps[This->nmaps].buf = This->buf;
             This->nmaps++;
             This->nlocks++;
+            DBG("Returning %p\n", nine_upload_buffer_get_map(This->buf) + 
OffsetToLock);
             *ppbData = nine_upload_buffer_get_map(This->buf) + OffsetToLock;
             return D3D_OK;
         } else {
diff --git a/src/gallium/frontends/nine/iunknown.c 
b/src/gallium/frontends/nine/iunknown.c
index 7f63af4c705..c4b08bbf691 100644
--- a/src/gallium/frontends/nine/iunknown.c
+++ b/src/gallium/frontends/nine/iunknown.c
@@ -205,7 +205,7 @@ NineUnknown_SetPrivateData( struct NineUnknown *This,
 
     /* data consists of a header and the actual data. avoiding 2 mallocs */
     header = CALLOC_VARIANT_LENGTH_STRUCT(pheader, SizeOfData);
-    if (!header) { return E_OUTOFMEMORY; }
+    if (!header) { DBG("Returning E_OUTOFMEMORY\n"); return E_OUTOFMEMORY; }
     header->unknown = (Flags & D3DSPD_IUNKNOWN) ? TRUE : FALSE;
 
     /* if the refguid already exists, delete it */
@@ -223,6 +223,7 @@ NineUnknown_SetPrivateData( struct NineUnknown *This,
     memcpy(header_data, user_data, header->size);
     memcpy(&header->guid, refguid, sizeof(header->guid));
 
+    DBG("New header %p, size %d\n", header, (int)header->size);
     _mesa_hash_table_insert(This->pdata, &header->guid, header);
     if (header->unknown) { IUnknown_AddRef(*(IUnknown **)header_data); }
     return D3D_OK;
@@ -245,22 +246,26 @@ NineUnknown_GetPrivateData( struct NineUnknown *This,
     (void)guid_str;
 
     header = util_hash_table_get(This->pdata, refguid);
-    if (!header) { return D3DERR_NOTFOUND; }
+    if (!header) { DBG("Returning D3DERR_NOTFOUND\n"); return D3DERR_NOTFOUND; 
}
 
     user_assert(pSizeOfData, E_POINTER);
     sizeofdata = *pSizeOfData;
     *pSizeOfData = header->size;
+    DBG("Found header %p, size %d. Requested max %d\n", header, 
(int)header->size, (int)sizeofdata);
 
     if (!pData) {
+        DBG("Returning early D3D_OK\n");
         return D3D_OK;
     }
     if (sizeofdata < header->size) {
+        DBG("Returning D3DERR_MOREDATA\n");
         return D3DERR_MOREDATA;
     }
 
     header_data = (void *)header + sizeof(*header);
     if (header->unknown) { IUnknown_AddRef(*(IUnknown **)header_data); }
     memcpy(pData, header_data, header->size);
+    DBG("Returning D3D_OK\n");
 
     return D3D_OK;
 }
@@ -277,9 +282,12 @@ NineUnknown_FreePrivateData( struct NineUnknown *This,
     (void)guid_str;
 
     header = util_hash_table_get(This->pdata, refguid);
-    if (!header)
+    if (!header) {
+        DBG("Nothing to free\n");
         return D3DERR_NOTFOUND;
+    }
 
+    DBG("Freeing %p\n", header);
     ht_guid_delete(NULL, header, NULL);
     _mesa_hash_table_remove_key(This->pdata, refguid);
 
diff --git a/src/gallium/frontends/nine/nine_buffer_upload.c 
b/src/gallium/frontends/nine/nine_buffer_upload.c
index 0fbaa754de6..8cb175287ca 100644
--- a/src/gallium/frontends/nine/nine_buffer_upload.c
+++ b/src/gallium/frontends/nine/nine_buffer_upload.c
@@ -75,7 +75,7 @@ nine_upload_create_buffer_group(struct nine_buffer_upload 
*upload,
 {
     struct pipe_resource resource;
     struct pipe_screen *screen = upload->pipe->screen;
-    DBG("%p %p\n", upload, group);
+    DBG("Allocating %p %p\n", upload, group);
 
     memset(&resource, 0, sizeof(resource));
     resource.target = PIPE_BUFFER;
@@ -107,6 +107,7 @@ nine_upload_create_buffer_group(struct nine_buffer_upload 
*upload,
     }
 
     group->free_offset = 0;
+    DBG("Success: %p %p\n", group->map, group->map+upload->buffers_size);
 }
 
 static void
@@ -114,6 +115,7 @@ nine_upload_destroy_buffer_group(struct nine_buffer_upload 
*upload,
                                  struct nine_buffer_group *group)
 {
     DBG("%p %p\n", upload, group);
+    DBG("Release: %p %p\n", group->map, group->map+upload->buffers_size);
     assert(group->refcount == 0);
 
     if (group->transfer)
@@ -279,6 +281,7 @@ uint8_t *
 nine_upload_buffer_get_map(struct nine_subbuffer *buf)
 {
     if (buf->parent) {
+        DBG("%d\n", buf->parent->refcount);
         return buf->parent->map + buf->offset;
     }
     /* lonely buffer */
diff --git a/src/gallium/frontends/nine/surface9.c 
b/src/gallium/frontends/nine/surface9.c
index ed1be08c5d2..7582104239f 100644
--- a/src/gallium/frontends/nine/surface9.c
+++ b/src/gallium/frontends/nine/surface9.c
@@ -359,6 +359,7 @@ NineSurface9_GetDesc( struct NineSurface9 *This,
                       D3DSURFACE_DESC *pDesc )
 {
     user_assert(pDesc != NULL, E_POINTER);
+    DBG("This=%p pDesc=%p\n", This, pDesc);
     *pDesc = This->desc;
     return D3D_OK;
 }
@@ -494,7 +495,6 @@ NineSurface9_LockRect( struct NineSurface9 *This,
             stride = This->stride_internal;
             data = This->data_internal;
         }
-        DBG("returning system memory\n");
         /* ATI1 and ATI2 need special handling, because of d3d9 bug.
          * We must advertise to the application as if it is uncompressed
          * and bpp 8, and the app has a workaround to work with the fact
@@ -510,6 +510,7 @@ NineSurface9_LockRect( struct NineSurface9 *This,
                                                 box.x,
                                                 box.y);
         }
+        DBG("returning system memory %p\n", pLockedRect->pBits);
     } else {
         bool no_refs = !p_atomic_read(&This->base.base.bind) &&
             !(This->base.base.container && 
p_atomic_read(&This->base.base.container->bind));
diff --git a/src/gallium/frontends/nine/texture9.c 
b/src/gallium/frontends/nine/texture9.c
index ae779a0bb5b..b1a45763b81 100644
--- a/src/gallium/frontends/nine/texture9.c
+++ b/src/gallium/frontends/nine/texture9.c
@@ -243,6 +243,7 @@ NineTexture9_GetLevelDesc( struct NineTexture9 *This,
     DBG("This=%p Level=%d pDesc=%p\n", This, Level, pDesc);
 
     user_assert(Level < This->base.level_count, D3DERR_INVALIDCALL);
+    user_assert(pDesc, D3DERR_INVALIDCALL);
 
     *pDesc = This->surfaces[Level]->desc;
 
@@ -257,6 +258,7 @@ NineTexture9_GetSurfaceLevel( struct NineTexture9 *This,
     DBG("This=%p Level=%d ppSurfaceLevel=%p\n", This, Level, ppSurfaceLevel);
 
     user_assert(Level < This->base.level_count, D3DERR_INVALIDCALL);
+    user_assert(ppSurfaceLevel, D3DERR_INVALIDCALL);
 
     NineUnknown_AddRef(NineUnknown(This->surfaces[Level]));
     *ppSurfaceLevel = (IDirect3DSurface9 *)This->surfaces[Level];

_______________________________________________
mesa-commit mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/mesa-commit

Reply via email to