Skip to content

types: properly use buffer refs #9804

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
wants to merge 3 commits into from

Conversation

ikalco
Copy link
Contributor

@ikalco ikalco commented Mar 30, 2025

Describe your PR, what does it fix/add?

part 1 of #9774

Is there anything you want to mention? (unchecked code, possible bugs, found problems, breaking compatibility, etc.)

Is it ready for merging, or does it need work?

yes

@ikalco ikalco changed the title core: properly use buffer refs types: properly use buffer refs Mar 30, 2025
@gulafaran
Copy link
Contributor

this PR crashes on

 Backtrace:                                                                                                                                                                                                                                                                                
     # | /usr/lib/gcc/x86_64-pc-linux-gnu/14/libasan.so.8(+0x8dd25) [0x7ffff788dd25]                                                                                                                                                                                                       
         ??                                                                                                                                                                                                                                                                                
         ??:0                                                                                                                                                                                                                                                                              
     #1 | ./Hyprland(_Z12getBacktracev+0x1a3) [0x555556b05e0b]                                                                                                                                                                                                                             
         getBacktrace()                                                                                                                                                                                                                                                                    
         /home/tom/dev/Hyprland/src/helpers/MiscFunctions.cpp:723 (discriminator 1)                                                                                                                                                                                                        
     #2 | ./Hyprland(_ZN14NCrashReporter18createAndSaveCrashEi+0xc70) [0x5555568646d0]                                                                                                                                                                                                     
         NCrashReporter::createAndSaveCrash(int)                                                                                                                                                                                                                                           
         /home/tom/dev/Hyprland/src/debug/CrashReporter.cpp:203                                                                                                                                                                                                                            
     #3 | ./Hyprland(+0x10a3ffd) [0x5555565f7ffd]                                                                                                                                                                                                                                          
         handleUnrecoverableSignal(int)                                                                                                                                                                                                                                                    
         /home/tom/dev/Hyprland/src/Compositor.cpp:111                                                                                                                                                                                                                                     
     #4 | /usr/lib64/libc.so.6(+0x40e90) [0x7ffff5c40e90]                                                                                                                                                                                                                                  
         ??                                                                                                                                                                                                                                                                                
         ??:0                                                                                                                                                                                                                                                                              
     #5 | ./Hyprland(_ZN18CDRMSyncPointState17createSyncReleaseEv+0xd6) [0x55555714fec6]                                                                                                                                                                                                   
         CDRMSyncPointState::createSyncRelease()                                                                                                                                                                                                                                           
         /home/tom/dev/Hyprland/src/protocols/DRMSyncobj.cpp:23                                                                                                                                                                                                                            
     #6 | ./Hyprland(+0x1bfdb00) [0x555557151b00]                                                                                                                                                                                                                                          
         CDRMSyncobjSurfaceResource::CDRMSyncobjSurfaceResource(Hyprutils::Memory::CUniquePointer<CWpLinuxDrmSyncobjSurfaceV1>&&, Hyprutils::Memory::CSharedPointer<CWLSurfaceResource>)::{lambda(std::any)#1}::operator()(std::any) const                                                 
         /home/tom/dev/Hyprland/src/protocols/DRMSyncobj.cpp:118 (discriminator 6)                                                                                                                                                                                                         
     #7 | ./Hyprland(+0x1c11950) [0x555557165950]                                                                                                                                                                                                                                          
         void std::__invoke_impl<void, CDRMSyncobjSurfaceResource::CDRMSyncobjSurfaceResource(Hyprutils::Memory::CUniquePointer<CWpLinuxDrmSyncobjSurfaceV1>&&, Hyprutils::Memory::CSharedPointer<CWLSurfaceResource>)::{lambda(std::any)#1}&, std::any>(std::__invoke_other,               CDRMSyncobjSurfaceResource::CDRMSyncobjSurfaceResource(Hyprutils::Memory::CUniquePointer<CWpLinuxDrmSyncobjSurfaceV1>&&, Hyprutils::Memory::CSharedPointer<CWLSurfaceResource>)::{lambda(std::any)#1}&, std::any&&)                                                                       
         /usr/lib/gcc/x86_64-pc-linux-gnu/14/include/g++-v14/bits/invoke.h:61 (discriminator 2)                                                                                                                                                                                            
     #8 | ./Hyprland(+0x1c0e5d0) [0x5555571625d0]                                                                                                                                                                                                                                          
         std::enable_if<is_invocable_r_v<void, CDRMSyncobjSurfaceResource::CDRMSyncobjSurfaceResource(Hyprutils::Memory::CUniquePointer<CWpLinuxDrmSyncobjSurfaceV1>&&, Hyprutils::Memory::CSharedPointer<CWLSurfaceResource>)::{lambda(std::any)#1}&, std::any>, void>::type std::         __invoke_r<void, CDRMSyncobjSurfaceResource::CDRMSyncobjSurfaceResource(Hyprutils::Memory::CUniquePointer<CWpLinuxDrmSyncobjSurfaceV1>&&, Hyprutils::Memory::CSharedPointer<CWLSurfaceResource>)::{lambda(std::any)#1}&, std::any>(CDRMSyncobjSurfaceResource::                            CDRMSyncobjSurfaceResource(Hyprutils::Memory::CUniquePointer<CWpLinuxDrmSyncobjSurfaceV1>&&, Hyprutils::Memory::CSharedPointer<CWLSurfaceResource>)::{lambda(std::any)#1}&, std::any&&)                                                                                                   
         /usr/lib/gcc/x86_64-pc-linux-gnu/14/include/g++-v14/bits/invoke.h:117                                                                                                                                                                                                             
     #9 | ./Hyprland(+0x1c0949e) [0x55555715d49e]                                                                                                                                                                                                                                          
         std::_Function_handler<void (std::any), CDRMSyncobjSurfaceResource::CDRMSyncobjSurfaceResource(Hyprutils::Memory::CUniquePointer<CWpLinuxDrmSyncobjSurfaceV1>&&, Hyprutils::Memory::CSharedPointer<CWLSurfaceResource>)::{lambda(std::any)#1}>::_M_invoke(std::_Any_data const&,   std::any&&)                                                                                                                                                                                                                                                                               
         /usr/lib/gcc/x86_64-pc-linux-gnu/14/include/g++-v14/bits/std_function.h:291                                                                                                                                                                                                       
     #1 | /usr/lib64/libhyprutils.so.4(_ZN9Hyprutils6Signal15CSignalListener4emitESt3any+0x4c) [0x7ffff7605ccc]                                                                                                                                                                            
         ??                                                                                                                                                                                                                                                                                
         ??:0                                                                                                                                                                                                                                                                              
     #11 | /usr/lib64/libhyprutils.so.4(_ZN9Hyprutils6Signal7CSignal4emitESt3any+0x295) [0x7ffff76060a5]                                                                                                                                                                                   
         ??                                                                                                                                                                                                                                                                                
         ??:0                                                                                                                                                                                                                                                                              
     #12 | ./Hyprland(+0x229b537) [0x5555577ef537]                                                                                                                                                                                                                                         
         CWLSurfaceResource::CWLSurfaceResource(Hyprutils::Memory::CSharedPointer<CWlSurface>)::{lambda(CWlSurface*)#3}::operator()(CWlSurface*) const                                                                                                                                     
         /home/tom/dev/Hyprland/src/protocols/core/Compositor.cpp:112 (discriminator 2)

ikalco added 3 commits March 31, 2025 16:15
TODO: use CHLBufferReference in direct scanout properly
      the only problem is the scanout buffer release timing,
      specifically the onBackendRelease mechanism
@ikalco ikalco force-pushed the simplify_buffer_refs branch from 486fd2c to 5f8bb98 Compare April 1, 2025 04:11
@ikalco
Copy link
Contributor Author

ikalco commented Apr 1, 2025

crash should be fixed, might have also fixed the nvidia flickering
... acquire point wasn't being copied heh

@ikalco
Copy link
Contributor Author

ikalco commented Apr 7, 2025

#9805 merged

@ikalco ikalco closed this Apr 7, 2025
@ikalco ikalco deleted the simplify_buffer_refs branch April 7, 2025 19:10
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants