On Thu, Apr 26, 2012 at 9:48 AM, Joonyoung Shim <jy0922.shim@xxxxxxxxxxx> wrote: > The G2D is a 2D graphic accelerator that supports Bit Block Transfer. > This G2D driver is exynos drm specific and supports only G2D(version > 4.1) of later Exynos series from Exynos4X12 because supporting DMA. > > The G2D is performed by two tasks simply. > 1. Configures the rendering parameters, such as foreground color and > coordinates data by setting the drawing context registers. > 2. Start the rendering process by setting thre relevant command > registers accordingly. > > The G2D version 4.1 supports DMA mode as host interface. User can make > command list to reduce HOST(ARM) loads. The contents of The command list > is setted to relevant registers of G2D by DMA. > > The command list is composed Header and command sets and Tail. > - Header: The number of command set(4Bytes) > - Command set: Register offset(4Bytes) + Register data(4Bytes) > - Tail: Pointer of base address of the other command list(4Bytes) > > By Tail field, the G2D can process many command lists without halt at > one go. > > The G2D has following the rendering pipeline. > --> Primitive Drawing --> Rotation --> Clipping --> Bilinear Sampling > --> Color Key --> ROP --> Mask Operation --> Alpha Blending --> > Dithering --> FrameBuffer > > And supports various operations from the rendering pipeline. > - copy > - fast solid color fill > - window clipping > - rotation > - flip > - 4 operand raster operation(ROP4) > - masking operation > - alpha blending > - color key > - dithering > - etc > > User should make the command list to data and registers needed by > operation to use. The Exynos G2D driver only manages the command lists > received from user. Some registers needs memory base address(physical > address) of image. User doesn't know its physical address, so fills the > gem handle of that memory than address to command sets, then G2D driver > converts it to memory base address. > > We adds three ioctls and one event for Exynos G2D. > > - ioctls > DRM_EXYNOS_G2D_GET_VER: get the G2D hardware version > DRM_EXYNOS_G2D_SET_CMDLIST: set the command list from user to driver > DRM_EXYNOS_G2D_EXEC: execute the command lists setted to driver > > - event > DRM_EXYNOS_G2D_EVENT: event to give notification completion of the > command list to user > > Signed-off-by: Joonyoung Shim <jy0922.shim@xxxxxxxxxxx> > Signed-off-by: Inki Dae <inki.dae@xxxxxxxxxxx> > Signed-off-by: Kyungmin Park <kyungmin.park@xxxxxxxxxxx> > --- > The validation check codes are added to this patch v2 to prevent > security problem from patch v1. > > v2 changelog: > > Some code clean and added to check follows about cmdlist from user. > > 1. size of cmdlist > 2. registers offset validation: the registers offset shouldn't get out > the range - 0x0104 ~ 0x0880 and it has to be multiple of 4. The cmd > can't have registers offset for base address and the cmd_gem can have > only registers offset for base address. Okay I started to pull -next this morning then realise this still has bad ioctls defines in it. NO POINTERS in IOCTL STRUCTS, use __u64. I think I've had this problem with nearly every ioctl you guys add, some someone down the chain of command isn't getting this message. > + > +struct drm_exynos_g2d_set_cmdlist { > + struct drm_exynos_g2d_cmd *cmd; > + struct drm_exynos_g2d_cmd *cmd_gem; ^^ pointers. Dave. _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/dri-devel