a pointer to the newly created surface. The caller owns the surface and should call Surface.destroy when done with it. This function always returns a valid pointer, but it will return a pointer to a "nil" surface if an error such as out of memory occurs. You can use Surface.status to check for this.
Create a pxoy surface that will render to target and record the operations to device. Since 1.12