However I felt that it had not been. And searched older document, older OptiX (even 6.5). It seems not possible for IS to access payload according to the offline documentation of 8.0.
That was an error inside that table of the documentation.
The IS could always access the payload registers inside OptiX 7 and 8 versions, not in older versions.
If you look inside the actual definitions inside the optix_device.h header that says:
/// Available in IS, AH, CH, MS
static __forceinline__ __device__ void optixSetPayload_0( unsigned int p );
...
/// Available in IS, AH, CH, MS
static __forceinline__ __device__ unsigned int optixGetPayload_0();
...
I checked the DXR spec and IS does not have access to the payload there, so I imagined this is kind of silent update. I didn’t know OptiX has supported it from 7:D
Well we can emulate this by always-accepting IS + real decision on AH but having access to the payload in IS seems natural.