The second one BUT use classes with class (static) methods instead of unit names.
This way you *cannot* call method without specifying which.
And can pack several ones in the same unit
And move them between units if you need to change architecture -- without touching the calling code

in my engine:
GAPI.TexImage2d(p, format)

where
class function GAPI.TexImage2d(
image: pointer;
format: TGAPITextureFormat;
level: GLuint = 0;
width: GLuint = 0; // 0 = get from image
height: GLuint = 0; // 0 = get from image
CreateTextureObject: boolean = false
): GLuint; //no return value unless CreateTextureObject is true