* omapdrm VRFB rotation
@ 2021-11-08 17:05 Ivaylo Dimitrov
2021-11-08 17:43 ` Ivaylo Dimitrov
0 siblings, 1 reply; 7+ messages in thread
From: Ivaylo Dimitrov @ 2021-11-08 17:05 UTC (permalink / raw)
To: Valkeinen, Tomi, Laurent Pinchart
Cc: Tony Lindgren, Merlijn Wajer, linux-omap
Hi,
Currently omapdrm supports TILER rotation only, which excludes omap3 and
earlier SoCs. I have the hardware (N900/N950), time and will to
implement VRFB rotation support in omapdrm driver, however, I'll
appreciate some hints. Or, if there is already something ready, please
point me to it so I can take it from where it is.
Besides partially reverting 517a8a9564c0dea98e6d4e2c7f0fe4cbb9b8c9ba and
copying VRFB code from omapfb, is there anything else I shall take in
consideration? Or, VRFB driver should not be a part of omapdrm, but a
standalone one?
Regards,
Ivo
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: omapdrm VRFB rotation
2021-11-08 17:05 omapdrm VRFB rotation Ivaylo Dimitrov
@ 2021-11-08 17:43 ` Ivaylo Dimitrov
2021-11-09 9:22 ` Tomi Valkeinen
0 siblings, 1 reply; 7+ messages in thread
From: Ivaylo Dimitrov @ 2021-11-08 17:43 UTC (permalink / raw)
To: tomi.valkeinen; +Cc: Laurent Pinchart, Tony Lindgren, Merlijn Wajer, linux-omap
Sorry, mail was sent to the old Tomi's address.
On 8.11.21 г. 19:05 ч., Ivaylo Dimitrov wrote:
> Hi,
>
> Currently omapdrm supports TILER rotation only, which excludes omap3 and
> earlier SoCs. I have the hardware (N900/N950), time and will to
> implement VRFB rotation support in omapdrm driver, however, I'll
> appreciate some hints. Or, if there is already something ready, please
> point me to it so I can take it from where it is.
>
> Besides partially reverting 517a8a9564c0dea98e6d4e2c7f0fe4cbb9b8c9ba and
> copying VRFB code from omapfb, is there anything else I shall take in
> consideration? Or, VRFB driver should not be a part of omapdrm, but a
> standalone one?
>
> Regards,
> Ivo
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: omapdrm VRFB rotation
2021-11-08 17:43 ` Ivaylo Dimitrov
@ 2021-11-09 9:22 ` Tomi Valkeinen
2021-11-10 8:29 ` Ivaylo Dimitrov
0 siblings, 1 reply; 7+ messages in thread
From: Tomi Valkeinen @ 2021-11-09 9:22 UTC (permalink / raw)
To: Ivaylo Dimitrov
Cc: Laurent Pinchart, Tony Lindgren, Merlijn Wajer, linux-omap
Hi,
On 08/11/2021 19:43, Ivaylo Dimitrov wrote:
> Sorry, mail was sent to the old Tomi's address.
>
> On 8.11.21 г. 19:05 ч., Ivaylo Dimitrov wrote:
>> Hi,
>>
>> Currently omapdrm supports TILER rotation only, which excludes omap3
>> and earlier SoCs. I have the hardware (N900/N950), time and will to
>> implement VRFB rotation support in omapdrm driver, however, I'll
>> appreciate some hints. Or, if there is already something ready, please
>> point me to it so I can take it from where it is.
>>
>> Besides partially reverting 517a8a9564c0dea98e6d4e2c7f0fe4cbb9b8c9ba
>> and copying VRFB code from omapfb, is there anything else I shall take
>> in consideration? Or, VRFB driver should not be a part of omapdrm, but
>> a standalone one?
We already have DMM driver in the omapdrm module, and I think VRFB fits
along just fine. I don't think there ever has been any other users for
VRFB than DSS, and as it's such an old IP, I don't think there ever will.
I don't have any particular hints in mind.
Do you have omap4/5 so you can test that DMM still works after your changes?
Tomi
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: omapdrm VRFB rotation
2021-11-09 9:22 ` Tomi Valkeinen
@ 2021-11-10 8:29 ` Ivaylo Dimitrov
2021-11-10 9:01 ` Tomi Valkeinen
0 siblings, 1 reply; 7+ messages in thread
From: Ivaylo Dimitrov @ 2021-11-10 8:29 UTC (permalink / raw)
To: Tomi Valkeinen; +Cc: Laurent Pinchart, Tony Lindgren, Merlijn Wajer, linux-omap
Hi,
On 9.11.21 г. 11:22 ч., Tomi Valkeinen wrote:
> Hi,
>
> On 08/11/2021 19:43, Ivaylo Dimitrov wrote:
>> Sorry, mail was sent to the old Tomi's address.
>>
>> On 8.11.21 г. 19:05 ч., Ivaylo Dimitrov wrote:
>>> Hi,
>>>
>>> Currently omapdrm supports TILER rotation only, which excludes omap3
>>> and earlier SoCs. I have the hardware (N900/N950), time and will to
>>> implement VRFB rotation support in omapdrm driver, however, I'll
>>> appreciate some hints. Or, if there is already something ready,
>>> please point me to it so I can take it from where it is.
>>>
>>> Besides partially reverting 517a8a9564c0dea98e6d4e2c7f0fe4cbb9b8c9ba
>>> and copying VRFB code from omapfb, is there anything else I shall
>>> take in consideration? Or, VRFB driver should not be a part of
>>> omapdrm, but a standalone one?
>
> We already have DMM driver in the omapdrm module, and I think VRFB fits
> along just fine. I don't think there ever has been any other users for
> VRFB than DSS, and as it's such an old IP, I don't think there ever will.
>
Ok, I guess if a need appears, it can always be moved out of omapdrm.
The same applies to DMM/TILER code I guess.
> I don't have any particular hints in mind.
>
> Do you have omap4/5 so you can test that DMM still works after your
> changes?
>
Yes, I have motorola droid4 (4430/sgx540) to test with. Which brings
another issue on the table - I was not able to find a way to allocate a
TILER dma_buf. The only way seems to be by using omap_bo_xxx functions,
which is a 'vendor' API. Do I miss something or omapdrm is lacks
functionality? Also, is there any particular reason why TILER is not
enabled by default for dma_buf BOs? Is it a limited resource (like,
there is a finite number of BOs that can use TILER) or there is some
other reason. Also, is it possible to 'migrate' non-TILER BO to a TILER
one? The same issue will arise with VRFB (with its 12 contexts on omap3)
as well.
So, in short:
- omap3: VRFB driver to be added to omapdrm.
- omap3/omap4/omap5: dma_buf lacks TILER/VRFB support
Adding VRFB should be trivial, but I am more concerned about how to
rotate dma_buf buffers. I imagine something like - on setting the plane
"rotate" property, migrate physical address from 'normal' CMA memory to
a TILER/VRFB one. Is that possible? What if we already have that bo
mmap-ed? What if SGX MMU is already set up to access the memory? Or, is
it possible to use TILER for read access, the same way VRFB can be
set-up, so instead of writing through TILER/VRFB, DSS to be set-up to
read FB memory through TILER/VRFB thus avoiding the need to migrate SG
and/or page tables?
Thanks and regards,
Ivo
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: omapdrm VRFB rotation
2021-11-10 8:29 ` Ivaylo Dimitrov
@ 2021-11-10 9:01 ` Tomi Valkeinen
2021-11-10 9:50 ` Ivaylo Dimitrov
0 siblings, 1 reply; 7+ messages in thread
From: Tomi Valkeinen @ 2021-11-10 9:01 UTC (permalink / raw)
To: Ivaylo Dimitrov
Cc: Laurent Pinchart, Tony Lindgren, Merlijn Wajer, linux-omap
On 10/11/2021 10:29, Ivaylo Dimitrov wrote:
> Hi,
>
> On 9.11.21 г. 11:22 ч., Tomi Valkeinen wrote:
>> Hi,
>>
>> On 08/11/2021 19:43, Ivaylo Dimitrov wrote:
>>> Sorry, mail was sent to the old Tomi's address.
>>>
>>> On 8.11.21 г. 19:05 ч., Ivaylo Dimitrov wrote:
>>>> Hi,
>>>>
>>>> Currently omapdrm supports TILER rotation only, which excludes omap3
>>>> and earlier SoCs. I have the hardware (N900/N950), time and will to
>>>> implement VRFB rotation support in omapdrm driver, however, I'll
>>>> appreciate some hints. Or, if there is already something ready,
>>>> please point me to it so I can take it from where it is.
>>>>
>>>> Besides partially reverting 517a8a9564c0dea98e6d4e2c7f0fe4cbb9b8c9ba
>>>> and copying VRFB code from omapfb, is there anything else I shall
>>>> take in consideration? Or, VRFB driver should not be a part of
>>>> omapdrm, but a standalone one?
>>
>> We already have DMM driver in the omapdrm module, and I think VRFB
>> fits along just fine. I don't think there ever has been any other
>> users for VRFB than DSS, and as it's such an old IP, I don't think
>> there ever will.
>>
>
> Ok, I guess if a need appears, it can always be moved out of omapdrm.
> The same applies to DMM/TILER code I guess.
Yes.
>> I don't have any particular hints in mind.
>>
>> Do you have omap4/5 so you can test that DMM still works after your
>> changes?
>>
So, first, a few clarifications about DMM/TILER. There are two somewhat
separate things. I'm not sure what are the exactly correct words for
these, but these are the terms I've used:
- DMM (sometimes called wrongly TILER 1D), which acts as a basic iommu.
It doesn't do rotation, just mapping scattered pages to a contiguous
memory view.
- TILER (or TILER 2D) which on top of the above, adds support for rotation.
> Yes, I have motorola droid4 (4430/sgx540) to test with. Which brings
> another issue on the table - I was not able to find a way to allocate a
> TILER dma_buf. The only way seems to be by using omap_bo_xxx functions,
> which is a 'vendor' API. Do I miss something or omapdrm is lacks
Yes, omap_bo_xxx is omap specific API. But I don't understand your
question about omapdrm. omap_bo functions use omapdrm's API. The
userspace can skip libdrm and just call the ioctls directly if they so want.
> functionality? Also, is there any particular reason why TILER is not
> enabled by default for dma_buf BOs? Is it a limited resource (like,
> there is a finite number of BOs that can use TILER) or there is some
Yes, TILER is a limited resource, there's a maximum size for the
currently mapped memory. Going through TILER is also slower, and while
for 0 degree rotation the diff probably isn't much, it's still there.
Also TILER is not really quite supported, as I never got it working with
all the YUV modes, and also because there's a HW issue, which may cause
the device to lock up in some rare cases. And last, TILER creates such a
memory layout that it's not possible to share it safely with dmabuf, as
dmabuf lacks the features to properly describe the layout.
All that said, I think TILER should mostly work in upstream.
However, DMM is supported, and used by default. If you allocate a dumb
buffer, it uses DMM by default.
> other reason. Also, is it possible to 'migrate' non-TILER BO to a TILER
> one? The same issue will arise with VRFB (with its 12 contexts on omap3)
> as well.
No, not possible to migrate.
> So, in short:
> - omap3: VRFB driver to be added to omapdrm.
> - omap3/omap4/omap5: dma_buf lacks TILER/VRFB support
Can you elaborate on what's missing?
> Adding VRFB should be trivial, but I am more concerned about how to
> rotate dma_buf buffers. I imagine something like - on setting the plane
> "rotate" property, migrate physical address from 'normal' CMA memory to
> a TILER/VRFB one. Is that possible? What if we already have that bo
> mmap-ed? What if SGX MMU is already set up to access the memory? Or, is
> it possible to use TILER for read access, the same way VRFB can be
> set-up, so instead of writing through TILER/VRFB, DSS to be set-up to
> read FB memory through TILER/VRFB thus avoiding the need to migrate SG
> and/or page tables?
I have to say I don't quite remember how VRFB works. But for TILER, we
have to specifically allocate a TILER buffer. And then everyone else
uses TILER 0 degree view, but DSS can use 0/90/180/270 view when showing
it on the display.
But I think the case is the same for VRFB too: if you want to use VRFB,
all access has to go through VRFB, as the pixels are written to memory
in a special way.
Tomi
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: omapdrm VRFB rotation
2021-11-10 9:01 ` Tomi Valkeinen
@ 2021-11-10 9:50 ` Ivaylo Dimitrov
2021-11-10 11:05 ` Tomi Valkeinen
0 siblings, 1 reply; 7+ messages in thread
From: Ivaylo Dimitrov @ 2021-11-10 9:50 UTC (permalink / raw)
To: Tomi Valkeinen
Cc: Laurent Pinchart, Tony Lindgren, Merlijn Wajer, linux-omap,
Carl Philipp Klemm
On 10.11.21 г. 11:01 ч., Tomi Valkeinen wrote:
> On 10/11/2021 10:29, Ivaylo Dimitrov wrote:
>> Hi,
>>
>> On 9.11.21 г. 11:22 ч., Tomi Valkeinen wrote:
>>> Hi,
>>>
>>> On 08/11/2021 19:43, Ivaylo Dimitrov wrote:
>>>> Sorry, mail was sent to the old Tomi's address.
>>>>
>>>> On 8.11.21 г. 19:05 ч., Ivaylo Dimitrov wrote:
>>>>> Hi,
>>>>>
>>>>> Currently omapdrm supports TILER rotation only, which excludes
>>>>> omap3 and earlier SoCs. I have the hardware (N900/N950), time and
>>>>> will to implement VRFB rotation support in omapdrm driver, however,
>>>>> I'll appreciate some hints. Or, if there is already something
>>>>> ready, please point me to it so I can take it from where it is.
>>>>>
>>>>> Besides partially reverting
>>>>> 517a8a9564c0dea98e6d4e2c7f0fe4cbb9b8c9ba and copying VRFB code from
>>>>> omapfb, is there anything else I shall take in consideration? Or,
>>>>> VRFB driver should not be a part of omapdrm, but a standalone one?
>>>
>>> We already have DMM driver in the omapdrm module, and I think VRFB
>>> fits along just fine. I don't think there ever has been any other
>>> users for VRFB than DSS, and as it's such an old IP, I don't think
>>> there ever will.
>>>
>>
>> Ok, I guess if a need appears, it can always be moved out of omapdrm.
>> The same applies to DMM/TILER code I guess.
>
> Yes.
>
>>> I don't have any particular hints in mind.
>>>
>>> Do you have omap4/5 so you can test that DMM still works after your
>>> changes?
>>>
>
> So, first, a few clarifications about DMM/TILER. There are two somewhat
> separate things. I'm not sure what are the exactly correct words for
> these, but these are the terms I've used:
>
> - DMM (sometimes called wrongly TILER 1D), which acts as a basic iommu.
> It doesn't do rotation, just mapping scattered pages to a contiguous
> memory view.
>
> - TILER (or TILER 2D) which on top of the above, adds support for rotation.
>
Thanks for the clarification, I'll try to stick to those.
>> Yes, I have motorola droid4 (4430/sgx540) to test with. Which brings
>> another issue on the table - I was not able to find a way to allocate
>> a TILER dma_buf. The only way seems to be by using omap_bo_xxx
>> functions, which is a 'vendor' API. Do I miss something or omapdrm is
>> lacks
>
> Yes, omap_bo_xxx is omap specific API. But I don't understand your
> question about omapdrm. omap_bo functions use omapdrm's API. The
> userspace can skip libdrm and just call the ioctls directly if they so
> want.
>
omap_bo functions/ioctls do, but if we try to use GBM dma_buf API
(gbm_bo_create() and friends), we cannot allocate anything but CMA
memory which omapdrm refuses to rotate, IIUC. Well at least I was not
able to make framebuffer rotate with GBM allocated BO.
The terms I use:
dma_buf - BO that is allocated using GBM API and seems to end up here:
https://elixir.bootlin.com/linux/latest/source/drivers/gpu/drm/omapdrm/omap_gem.c#L1300.
Seems it cannot go through the TILER.
omap_bo: BO that is allocated using omap_bo functions. IIUC this is
basically a dumb buffer, but it can be allocated to be accesses through
TILER by passing the appropriate flags to omap_bo_new().
>> functionality? Also, is there any particular reason why TILER is not
>> enabled by default for dma_buf BOs? Is it a limited resource (like,
>> there is a finite number of BOs that can use TILER) or there is some
>
> Yes, TILER is a limited resource, there's a maximum size for the
> currently mapped memory. Going through TILER is also slower, and while
> for 0 degree rotation the diff probably isn't much, it's still there.
>
Yeah, so we should go through TILER only when needed. The same as VRFB.
> Also TILER is not really quite supported, as I never got it working with
> all the YUV modes, and also because there's a HW issue, which may cause
> the device to lock up in some rare cases. And last, TILER creates such a
> memory layout that it's not possible to share it safely with dmabuf, as
> dmabuf lacks the features to properly describe the layout.
>
> All that said, I think TILER should mostly work in upstream.
>
But, only from omap_bo BOs
> However, DMM is supported, and used by default. If you allocate a dumb
> buffer, it uses DMM by default.
>
not for dma_buf BOs though. Not really an issue as on omap3 there is no
DMM so we must use CMA either ways.
>> other reason. Also, is it possible to 'migrate' non-TILER BO to a
>> TILER one? The same issue will arise with VRFB (with its 12 contexts
>> on omap3) as well.
>
> No, not possible to migrate.
>
>> So, in short:
>> - omap3: VRFB driver to be added to omapdrm.
>> - omap3/omap4/omap5: dma_buf lacks TILER/VRFB support
>
> Can you elaborate on what's missing?
>
GBM BOs (which I call dma_buf BOs) lack TILER support
>> Adding VRFB should be trivial, but I am more concerned about how to
>> rotate dma_buf buffers. I imagine something like - on setting the
>> plane "rotate" property, migrate physical address from 'normal' CMA
>> memory to a TILER/VRFB one. Is that possible? What if we already have
>> that bo mmap-ed? What if SGX MMU is already set up to access the
>> memory? Or, is it possible to use TILER for read access, the same way
>> VRFB can be set-up, so instead of writing through TILER/VRFB, DSS to
>> be set-up to read FB memory through TILER/VRFB thus avoiding the need
>> to migrate SG and/or page tables?
>
> I have to say I don't quite remember how VRFB works.
it has 12 'contexts' that can represent up to that number of 'images' in
memory with rotated views
> But for TILER, we
> have to specifically allocate a TILER buffer. And then everyone else
> uses TILER 0 degree view, but DSS can use 0/90/180/270 view when showing
> it on the display.
>
oh, so in theory omapdrm should be able to show dma_buf BOs rotated? We
only lack a way to allocate TILER GBM BO, right?
I ported xf86-video-omap to use GBM API instead of omap_bo API and it
works fine in native orientation. However, when it tries to set
'rotated' property to framebuffer, it receives an error. Should I trace
to see why it fails in the kernel or this is not supported?
> But I think the case is the same for VRFB too: if you want to use VRFB,
> all access has to go through VRFB, as the pixels are written to memory
> in a special way.
>
Yes, I think you are right.
Sorry for asking so much questions but I want to have a clear picture on
what is supposed to work and what is missing.
Thanks,
Ivo
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: omapdrm VRFB rotation
2021-11-10 9:50 ` Ivaylo Dimitrov
@ 2021-11-10 11:05 ` Tomi Valkeinen
0 siblings, 0 replies; 7+ messages in thread
From: Tomi Valkeinen @ 2021-11-10 11:05 UTC (permalink / raw)
To: Ivaylo Dimitrov
Cc: Laurent Pinchart, Tony Lindgren, Merlijn Wajer, linux-omap,
Carl Philipp Klemm
On 10/11/2021 11:50, Ivaylo Dimitrov wrote:
>
>
> On 10.11.21 г. 11:01 ч., Tomi Valkeinen wrote:
>> On 10/11/2021 10:29, Ivaylo Dimitrov wrote:
>>> Hi,
>>>
>>> On 9.11.21 г. 11:22 ч., Tomi Valkeinen wrote:
>>>> Hi,
>>>>
>>>> On 08/11/2021 19:43, Ivaylo Dimitrov wrote:
>>>>> Sorry, mail was sent to the old Tomi's address.
>>>>>
>>>>> On 8.11.21 г. 19:05 ч., Ivaylo Dimitrov wrote:
>>>>>> Hi,
>>>>>>
>>>>>> Currently omapdrm supports TILER rotation only, which excludes
>>>>>> omap3 and earlier SoCs. I have the hardware (N900/N950), time and
>>>>>> will to implement VRFB rotation support in omapdrm driver,
>>>>>> however, I'll appreciate some hints. Or, if there is already
>>>>>> something ready, please point me to it so I can take it from where
>>>>>> it is.
>>>>>>
>>>>>> Besides partially reverting
>>>>>> 517a8a9564c0dea98e6d4e2c7f0fe4cbb9b8c9ba and copying VRFB code
>>>>>> from omapfb, is there anything else I shall take in consideration?
>>>>>> Or, VRFB driver should not be a part of omapdrm, but a standalone
>>>>>> one?
>>>>
>>>> We already have DMM driver in the omapdrm module, and I think VRFB
>>>> fits along just fine. I don't think there ever has been any other
>>>> users for VRFB than DSS, and as it's such an old IP, I don't think
>>>> there ever will.
>>>>
>>>
>>> Ok, I guess if a need appears, it can always be moved out of omapdrm.
>>> The same applies to DMM/TILER code I guess.
>>
>> Yes.
>>
>>>> I don't have any particular hints in mind.
>>>>
>>>> Do you have omap4/5 so you can test that DMM still works after your
>>>> changes?
>>>>
>>
>> So, first, a few clarifications about DMM/TILER. There are two
>> somewhat separate things. I'm not sure what are the exactly correct
>> words for these, but these are the terms I've used:
>>
>> - DMM (sometimes called wrongly TILER 1D), which acts as a basic
>> iommu. It doesn't do rotation, just mapping scattered pages to a
>> contiguous memory view.
>>
>> - TILER (or TILER 2D) which on top of the above, adds support for
>> rotation.
>>
>
> Thanks for the clarification, I'll try to stick to those.
>
>>> Yes, I have motorola droid4 (4430/sgx540) to test with. Which brings
>>> another issue on the table - I was not able to find a way to allocate
>>> a TILER dma_buf. The only way seems to be by using omap_bo_xxx
>>> functions, which is a 'vendor' API. Do I miss something or omapdrm is
>>> lacks
>>
>> Yes, omap_bo_xxx is omap specific API. But I don't understand your
>> question about omapdrm. omap_bo functions use omapdrm's API. The
>> userspace can skip libdrm and just call the ioctls directly if they so
>> want.
>>
>
> omap_bo functions/ioctls do, but if we try to use GBM dma_buf API
> (gbm_bo_create() and friends), we cannot allocate anything but CMA
> memory which omapdrm refuses to rotate, IIUC. Well at least I was not
> able to make framebuffer rotate with GBM allocated BO.
Yes, I think that's true: libgbm doesn't support omap's TILER.
> The terms I use:
> dma_buf - BO that is allocated using GBM API and seems to end up here:
> https://elixir.bootlin.com/linux/latest/source/drivers/gpu/drm/omapdrm/omap_gem.c#L1300.
> Seems it cannot go through the TILER.
Isn't that a gbm_bo? Or something =). dma_buf means a specific thing,
which is not what you mean above.
> omap_bo: BO that is allocated using omap_bo functions. IIUC this is
> basically a dumb buffer, but it can be allocated to be accesses through
> TILER by passing the appropriate flags to omap_bo_new().
No, I don't think you can allocate a TILER buffer with omap_bo_new(),
you need to use omap_bo_new_tiled().
>>> functionality? Also, is there any particular reason why TILER is not
>>> enabled by default for dma_buf BOs? Is it a limited resource (like,
>>> there is a finite number of BOs that can use TILER) or there is some
>>
>> Yes, TILER is a limited resource, there's a maximum size for the
>> currently mapped memory. Going through TILER is also slower, and while
>> for 0 degree rotation the diff probably isn't much, it's still there.
>>
>
> Yeah, so we should go through TILER only when needed. The same as VRFB.
>
>> Also TILER is not really quite supported, as I never got it working
>> with all the YUV modes, and also because there's a HW issue, which may
>> cause the device to lock up in some rare cases. And last, TILER
>> creates such a memory layout that it's not possible to share it safely
>> with dmabuf, as dmabuf lacks the features to properly describe the
>> layout.
>>
>> All that said, I think TILER should mostly work in upstream.
>>
>
> But, only from omap_bo BOs
Yes.
>> However, DMM is supported, and used by default. If you allocate a dumb
>> buffer, it uses DMM by default.
>>
>
> not for dma_buf BOs though. Not really an issue as on omap3 there is no
> DMM so we must use CMA either ways.
I think all allocations use DMM by default, if available. So gbm_bo
should use DMM underneath on omap4/5.
>>> other reason. Also, is it possible to 'migrate' non-TILER BO to a
>>> TILER one? The same issue will arise with VRFB (with its 12 contexts
>>> on omap3) as well.
>>
>> No, not possible to migrate.
>>
>>> So, in short:
>>> - omap3: VRFB driver to be added to omapdrm.
>>> - omap3/omap4/omap5: dma_buf lacks TILER/VRFB support
>>
>> Can you elaborate on what's missing?
>>
>
> GBM BOs (which I call dma_buf BOs) lack TILER support
>
>>> Adding VRFB should be trivial, but I am more concerned about how to
>>> rotate dma_buf buffers. I imagine something like - on setting the
>>> plane "rotate" property, migrate physical address from 'normal' CMA
>>> memory to a TILER/VRFB one. Is that possible? What if we already have
>>> that bo mmap-ed? What if SGX MMU is already set up to access the
>>> memory? Or, is it possible to use TILER for read access, the same way
>>> VRFB can be set-up, so instead of writing through TILER/VRFB, DSS to
>>> be set-up to read FB memory through TILER/VRFB thus avoiding the need
>>> to migrate SG and/or page tables?
>>
>> I have to say I don't quite remember how VRFB works.
>
> it has 12 'contexts' that can represent up to that number of 'images' in
> memory with rotated views
>
>> But for TILER, we have to specifically allocate a TILER buffer. And
>> then everyone else uses TILER 0 degree view, but DSS can use
>> 0/90/180/270 view when showing it on the display.
>>
>
> oh, so in theory omapdrm should be able to show dma_buf BOs rotated? We
> only lack a way to allocate TILER GBM BO, right?
Yes.
> I ported xf86-video-omap to use GBM API instead of omap_bo API and it
> works fine in native orientation. However, when it tries to set
> 'rotated' property to framebuffer, it receives an error. Should I trace
> to see why it fails in the kernel or this is not supported?
Well, I have no idea what's going on there, but I just tested with the
latest drm-misc-next, and at least a basic test with TILER works. I used
kms++ and rottest.py.
Maybe you used omap_bo_new(), which does not give you a TILER buffer?
>> But I think the case is the same for VRFB too: if you want to use
>> VRFB, all access has to go through VRFB, as the pixels are written to
>> memory in a special way.
>>
>
> Yes, I think you are right.
>
> Sorry for asking so much questions but I want to have a clear picture on
> what is supposed to work and what is missing.
No problem. I think it's very nice to get VRFB moved to omapdrm, as I
believe that's the only feature missing from omapdrm which is supported
in omapfb.
Tomi
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2021-11-10 11:05 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-11-08 17:05 omapdrm VRFB rotation Ivaylo Dimitrov
2021-11-08 17:43 ` Ivaylo Dimitrov
2021-11-09 9:22 ` Tomi Valkeinen
2021-11-10 8:29 ` Ivaylo Dimitrov
2021-11-10 9:01 ` Tomi Valkeinen
2021-11-10 9:50 ` Ivaylo Dimitrov
2021-11-10 11:05 ` Tomi Valkeinen
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.