diff --git a/src/gallium/auxiliary/renderonly/renderonly.h b/src/gallium/auxiliary/renderonly/renderonly.h index 0d08a16e30f..0eafbf548a9 100644 --- a/src/gallium/auxiliary/renderonly/renderonly.h +++ b/src/gallium/auxiliary/renderonly/renderonly.h @@ -55,6 +55,21 @@ struct renderonly { * resource into the scanout hw. * - Make it easier for a gallium driver to detect if anything special needs * to be done in flush_resource(..) like a resolve to linear. + * + * When the screen has renderonly enabled, drivers need to follow these + * rules: + * - Create the scanout resource in resource_create and + * resource_create_with_modifiers if PIPE_BIND_SCANOUT is set. Drivers + * can fail if the scanout resource couldn't be created. + * - Try to import the scanout resource in resource_from_handle with + * renderonly_create_gpu_import_for_resource. Drivers MUST NOT fail if + * the scanout resource couldn't be created. + * - In a resource_get_handle call for WINSYS_HANDLE_TYPE_KMS, use + * renderonly_get_handle with the scanout resource, even if the scanout + * resource is NULL. Drivers MUST NOT return their own resource here, + * because the GEM handle will not be valid for the caller's DRM FD. + * - Implement resource_get_params for at least PIPE_RESOURCE_PARAM_STRIDE, + * PIPE_RESOURCE_PARAM_OFFSET and PIPE_RESOURCE_PARAM_MODIFIER. */ struct renderonly_scanout *(*create_for_resource)(struct pipe_resource *rsc, struct renderonly *ro,