This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

Linux/AM5728: Surface sharing between 2D GPU and 3D GPU

Part Number: AM5728

Tool/software: Linux

Hi.

I developed to blit(compose) 2D surface(gcoSURF_SetBuffer of DRM memory(decoded NV12 with ducati(IVA-HD))) and 2D surface(ARGB)  on 2DGPU(GC320) as TI help. DRM memory(decoded NV12 with ducati(IVA-HD)) should make omap_bo_new with OMAP_BO_WC.

It is OK.

I need to blit(compose) rendered surface of 3DGPU(gbm lib) and 2D surface(ARGB) on 2DGPU(GC320).

Can you support 2D GPU use gcoSURF_SetBuffer with vaddr of rendered surface of 3DGPU(gbm lib) ?

<CODE>

req.handle = gbm_bo_get_handle( lpBo ).u32;   /* rendered */

drmCommandWriteRead(m_DrmDeviceFD, DRM_OMAP_GEM_INFO, &req, sizeof(req));

...

mmap(0, size, PROT_READ | PROT_WRITE, MAP_SHARED, m_DrmDeviceFD, offset);  /* ok */

...

gcoSURF_SetBuffer on 2DGPU is died as below it.

extra-drivers\ti-gc320-driver-5.0.11.p7\hal\os\linux\kernel\gc_hal_kernel_os.c

gckOS_MapUserMemory(
    IN gckOS Os,
    IN gceCORE Core,
    IN gctPOINTER Memory,
    IN gctUINT32 Physical,
    IN gctSIZE_T Size,
    OUT gctPOINTER * Info,
    OUT gctUINT32_PTR Address
    )
{

...

 pgd_t * pgd = pgd_offset(current->mm, logical);

 pud_t * pud = pud_offset(pgd, logical);

....

}

<Log>

[  210.379759] Unable to handle kernel paging request at virtual address 400005b0
[  210.387011] pgd = d1311f80
[  210.389770] [400005b0] *pgd=00000000
[  210.393382] Internal error: Oops: 205 [#1] PREEMPT SMP ARM