JavaScript (ES6), 119117 bytes
a=>{for(d=[],n=p=T=C=0;a[p^=1]+d;d.push(c)*n=p=T=C=0;a[p^=1]+d;!n|c?n=c:--n?p^=1:d=a[T++,p].push(...d)&&[])d.push(c=a[p^1].shift(C++));return[T,C]}
Try it online!Try it online!
a => { // a[] = input as [ deck0, deck1 ]
for( // main loop:
d = [], // d[] = table deck
n = // n = number of cards we're allowed to draw
p = // p = current player
T = C = 0; // (T, C) = output (T = tricks / C = cards)
a[p ^= 1] + d; // before each iteration, change p to 'the other player'
// stop when both his deck and the table deck are empty
d.push(c) * // after each iteration, push c into d[]
!n | c ? // after each iteration, if n is zero or c is not zero:
n = c // set n to c
: // else:
--n ? // decrement n; if it's not zero:
p ^= 1 // force the current player to play again
: // else:
d = a[T++, p] // end of trick: increment T
.push(...d) // push the table deck into the other player's deck
&& [] // and clear the table deck
) //
cd.push( = a[p ^ 1] // at each iteration,
c = a[p ^ 1] // draw the card c from the deck of the current player,
.shift(C++); // the currentincrement playerC, and incrementpush C
c into d[]
); // end of for()
return [T, C] // return [ T, C ]
} //