I found that
In NvDrmRenderer::renderInternal(int fd),

     memset(&args, 0, sizeof(args));
     args.handle = handle;
     args.value = 1;
     ret = drmIoctl(drm_fd, DRM_IOCTL_TEGRA_GEM_SET_TILING, &args);

I can changed args.mode to DRM_TEGRA_GEM_TILING_MODE_BLOCK, it will be garbled.
I define the buffer like that

    input_params.layout = NvBufferLayout_BlockLinear;
    input_params.colorFormat = NvBufferColorFormat_ARGB32;
    input_params.nvbuf_tag = NvBufferTag_VIDEO_CONVERT;
    for (size_t i = 0; i < DRM_BUF_SIZE; i++)
        NvBufferCreateEx(&drm_buf_fd[i], &input_params);

By default we support YUV422, YUV420, YUV420 10-bit in drm sample. The formats are defined in NvBufGetDrmParams(). Not sure if it works to render RGBA NvBuffer. Does it work if you render RGBA NvBuffer in pitch linear?

Setting to DRM_TEGRA_GEM_TILING_MODE_BLOCK is not verified and may not work properly, if it is good to render in pitch linear, we would suggest set to DRM_TEGRA_GEM_TILING_MODE_PITCH

Yes! I have modified the NvBufGetDrmParams I can display DRM_TEGRA_GEM_TILING_MODE_PITCH ARGB32. But not work in DRM_TEGRA_GEM_TILING_MODE_BLOCK ARGB32. That means the hardware doesn’t support the DRM_TEGRA_GEM_TILING_MODE_BLOCK or some problems of the drm driver?

We would need to reproduce the issue and check. On currently releases, please use DRM_TEGRA_GEM_TILING_MODE_PITCH.

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.