If you are using a raw GPIO, then you will need to implement all of the debouncing yourself.
However, if you use GPIO_BUTTON, firmware does a little debouncing 3-4ms. If you need more, then you will need to run a state machine and start off a timer then wait for x number of ms, then check the condition and adjust debounce yourself.
Thanks for the information! It looks like we needed something that spanned more than a few milliseconds so we implemented our own that seems to be working fine.