i think primitiverestartworkaround is useless if dsttype and srctype both are  gl unsigned short  primitiverestartworkaround must be false  if dsttype and srctype both are  gl unsigned  uint  primitiverestartworkaround must be false  so there is no situation that dsttype equals srctype  meanwhile primitiverestartworkaround is true 