Encoder result (AV1) is I then all P frames, no B frames

Using ffprobe on the result of my encoder, I see my 60 frame GOP contains a single I frame with the rest as P frames. I explicitly told the encoder to give me an IBBP pattern, as follows:

I first fetch NV_ENC_PRESET_P7_GUID, then modify the parameters:

My_Initialisation_Parameters.tuningInfo = preset_tuning; // = NV_ENC_TUNING_INFO_HIGH_QUALITY
My_Initialisation_Parameters.encodeWidth = parameters.Width;
My_Initialisation_Parameters.encodeHeight = parameters.Height;
My_Initialisation_Parameters.maxEncodeWidth = parameters.Width;
My_Initialisation_Parameters.maxEncodeHeight = parameters.Height;
My_Initialisation_Parameters.reportSliceOffsets = 0;
My_Initialisation_Parameters.enableEncodeAsync = true;
My_Initialisation_Parameters.enableMEOnlyMode = false;
My_Initialisation_Parameters.bufferFormat = My_Buffer_Format_NV;
My_Initialisation_Parameters.frameRateNum = parameters.Framerate; // 60
My_Initialisation_Parameters.frameRateDen = 1;
My_Initialisation_Parameters.enablePTD = 1;
My_Initialisation_Parameters.encodeConfig->frameIntervalP = 3 // IBBP;
My_Initialisation_Parameters.encodeConfig->gopLength = parameters.GOP_Size; // 60 frames
My_Initialisation_Parameters.encodeConfig->rcParams.enableLookahead = true;
My_Initialisation_Parameters.encodeConfig->rcParams.lookaheadDepth = 4;
My_Initialisation_Parameters.encodeConfig->rcParams.rateControlMode = NV_ENC_PARAMS_RC_CBR;
My_Initialisation_Parameters.encodeConfig->rcParams.averageBitRate = parameters.Bitrate * 1000; // bitrate is 20,000

What mistake have I made?

Additional, I have now set :

	My_Initialisation_Parameters.encodeConfig->encodeCodecConfig.av1Config.idrPeriod = 4;

, and the ffprobe result is IPPP, IPPP, IPPP, there are no b-frames still.

Another update: I have tried the same code with H264 and HEVC. These two produce b frames, i.e. IBBP. This is another issue I have with the AV1 encoder/decoder then, in a similar way to my previous issue with decoding of AV1 throwing an exception. I have presumably misconfigured it somehow, or else with enablePTD the library itself has decided no B frames are needed. But how to tell?