On 2017å¹´06æ??28æ?¥ 04:50, Bas Nieuwenhuizen wrote: > On Tue, Jun 27, 2017 at 10:40 PM, Dave Airlie <airlied at gmail.com> wrote: >> On 26 June 2017 at 19:10, zhoucm1 <david1.zhou at amd.com> wrote: >>> >>> On 2017å¹´06æ??26æ?¥ 03:48, Dave Airlie wrote: >>>>> Do you not use bo list at all in mesa? radv as well? >>>> Currently radv is creating a bo list per command submission. radv does >>>> not use an offload thread to do command submission, as it seems pretty >>>> un-vulkan to use a thread for the queue submission thread the game >>>> uses. >>>> >>>> I have considered investigating this, but with vulkan it's probably >>>> optimising for the single threaded case which isn't where apps should >>>> really be. >>>> >>>> At the moment we regenerate the bo list on every CS ioctl, we probably >>>> can do a lot better, I know Bas has looked into this area a bit more >>>> than I. >>> Thanks Dave for inputting. >>> >>> Could I ask more about radv? How does radv make bo list for every cs ioctl? >>> Adding filter in every operation, any related bo will be add to bo list >>> during make command submission? >> When we create command buffers we add each bo to a list for it, but we >> don't call the kernel ioctl. >> >> When we get a QueueSubmit, we usually submit two IBs to the kernel, >> one with some cache flushes and one with the main IB in it, however as >> we have to give the kernel one bo list we have to combine the two >> lists (even if the cache flush list only has one ib in it, itself), so >> we can't call create bo list early, we have to do it just before >> command submission. However I don't think we've had any problems with >> this being our slow path yet, but this may change in the future. > Yeah. IIRC the bo list create is typically < 10% of our kernel time for radv. Thanks a lot for all your input. Regards, David Zhou >> Dave.