mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-05 22:38:05 +02:00
nouveau: add a fifo size debug check.
This commit is contained in:
parent
30b914e2ca
commit
e61f674844
2 changed files with 23 additions and 3 deletions
|
|
@ -38,6 +38,10 @@ USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|||
#include "nouveau_object.h"
|
||||
#include "nouveau_sync.h"
|
||||
|
||||
#ifdef NOUVEAU_RING_DEBUG
|
||||
int nouveau_fifo_remaining=0;
|
||||
#endif
|
||||
|
||||
|
||||
#define RING_SKIPS 8
|
||||
|
||||
|
|
|
|||
|
|
@ -34,7 +34,7 @@ USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|||
#include "nouveau_state_cache.h"
|
||||
|
||||
//#define NOUVEAU_RING_TRACE
|
||||
//#define NOUVEAU_RING_DEBUG
|
||||
#define NOUVEAU_RING_DEBUG
|
||||
//#define NOUVEAU_STATE_CACHE_DISABLE
|
||||
|
||||
#ifndef NOUVEAU_RING_TRACE
|
||||
|
|
@ -74,17 +74,33 @@ USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|||
*/
|
||||
#ifdef NOUVEAU_RING_DEBUG
|
||||
|
||||
extern int nouveau_fifo_remaining;
|
||||
|
||||
#define OUT_RINGp(ptr,sz) do { \
|
||||
uint32_t* p=(uint32_t*)(ptr); \
|
||||
int i; printf("OUT_RINGp: (size 0x%x dwords)\n",sz); for(i=0;i<sz;i++) printf(" 0x%08x %f\n", *(p+i), *((float*)(p+i))); \
|
||||
nouveau_fifo_remaining-=sz; \
|
||||
}while(0)
|
||||
|
||||
#define OUT_RING(n) do { \
|
||||
printf("OUT_RINGn: 0x%08x (%s)\n", n, __func__); \
|
||||
nouveau_fifo_remaining--; \
|
||||
}while(0)
|
||||
|
||||
#define OUT_RINGf(n) do { \
|
||||
printf("OUT_RINGf: %.04f (%s)\n", n, __func__); \
|
||||
nouveau_fifo_remaining--; \
|
||||
}while(0)
|
||||
|
||||
#define BEGIN_RING_SIZE(subchannel,tag,size) do { \
|
||||
if (nouveau_fifo_remaining!=0) \
|
||||
printf("RING ERROR : remaining %d\n",nouveau_fifo_remaining); \
|
||||
nouveau_state_cache_flush(nmesa); \
|
||||
if (nmesa->fifo.free <= (size)) \
|
||||
WAIT_RING(nmesa,(size)); \
|
||||
OUT_RING( ((size)<<18) | ((subchannel) << 13) | (tag)); \
|
||||
nmesa->fifo.free -= ((size) + 1); \
|
||||
nouveau_fifo_remaining=size; \
|
||||
}while(0)
|
||||
|
||||
#else
|
||||
|
|
@ -110,8 +126,6 @@ if (NOUVEAU_RING_TRACE) \
|
|||
*((float*)(nmesa->fifo.buffer+nmesa->fifo.current++))=(n); \
|
||||
}while(0)
|
||||
|
||||
#endif
|
||||
|
||||
#define BEGIN_RING_SIZE(subchannel,tag,size) do { \
|
||||
nouveau_state_cache_flush(nmesa); \
|
||||
if (nmesa->fifo.free <= (size)) \
|
||||
|
|
@ -120,6 +134,8 @@ if (NOUVEAU_RING_TRACE) \
|
|||
nmesa->fifo.free -= ((size) + 1); \
|
||||
}while(0)
|
||||
|
||||
#endif
|
||||
|
||||
extern void WAIT_RING(nouveauContextPtr nmesa,u_int32_t size);
|
||||
extern void nouveau_state_cache_flush(nouveauContextPtr nmesa);
|
||||
extern void nouveau_state_cache_init(nouveauContextPtr nmesa);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue