ESP32 PCNT and xQueue with 500 nanosecond TICKPERIOD trigger?

When feeding the queue correctly you shouldn’t have to fiddle around with its receive timeout. Just push the data into it assumingely in an ISR and receive it in a high prio task to process it. You’ll see if the ESP32 can handle it sustained at the desired rate checking the queue push return codes indicating a potential queue overflow.
When considering performance the FreeRTOS stream or message buffer feature might help because it’s faster.