Switching material purpose

Is there a way to switch in runtime between material purposes (preview and full) when implementing Hydra delegate?

We’ve setup purpose selection via HdRenderDelegate::SetRenderSetting and it is broadcast via HdRenderDelegate::GetMaterialBindingPurpose. We’re also marking DirtyMaterialId for Rprims to propagate material changes. However, it only seems to work with the very first value that was returned. This seems consistent with UsdImagingDelegate querying render delegate only in constructor. This effectively prevents from switching material purposes during runtime.

Is this intended behavior? We’d find it useful to select material purpose based on department needs and switch between them on demand. Is there anything we’re missing?