Comments (4)
I tried to debug this by comparing drm-rs
and modetest
. modetest
just calls drmModeGetResources
, which is almost identical to Device::resource_handles()
.
To compare:
My only possible explanation is that somehow Handle(control::RawHandle)
is not the same size as a u32
, but that was ruled out by @vberger by adding [repr(C)]
to the Handle
type.
I am out of ideas, hopefully @Slabity has some more.
from drm-rs.
let ids = ResourceHandles {
connectors: ffi_buf!(raw.connector_id_ptr, raw.count_connectors),
encoders: ffi_buf!(raw.encoder_id_ptr, raw.count_connectors),
crtcs: ffi_buf!(raw.crtc_id_ptr, raw.count_crtcs),
framebuffers: ffi_buf!(raw.fb_id_ptr, raw.count_fbs),
width: (raw.min_width, raw.max_width),
height: (raw.min_height, raw.max_height)
};
We seem to be setting the size of the encoder buffer to count_connectors
instead of count_encoders
. My theory is that the driver is overflowing to the next buffer, overwriting some CRTC ids with encoder ids instead.
You can confirm this by trying to load 63
and 64
as encoders. But in any case, it's a bug. I'll patch it now.
from drm-rs.
Should be fixed in 0f3a753
If it's still broken on your system, let me know.
from drm-rs.
I can confirm this fixes the issue. 👍
from drm-rs.
Related Issues (20)
- Support for driver-specific APIs HOT 1
- Missing zero in control/mod.rs? HOT 2
- thread 'main' panicked at 'Could not set CRTC: InvalidArgument' in Examples/legacy_modeset.rs HOT 13
- Atomic mode setting compatibility with libdrm HOT 2
- transmuting Vec might lead to undefined behavior HOT 9
- Failing to get encoders for connector HOT 4
- Atomic modesetting on RPi HOT 12
- Expose drm_sys::drm_clip_rect in the main crate HOT 2
- invalid link HOT 1
- Automate binding updates + Use kernel rather than libdrm HOT 3
- Export drm RDWR/CLOEXEC flags HOT 1
- Async atomic flips
- Various valgrind errors related to uninitialized memory HOT 2
- Should drm::Device should have a default implementation or be demoted to a struct? HOT 9
- Filter out non-existent modes in connector::Info::modes() HOT 3
- No license file HOT 1
- 0.3.x stable Rust support HOT 4
- Continuous integration using Github Actions HOT 2
- Is the main branch abandoned ? HOT 2
- [Question] Failed to create framebuffer HOT 4
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from drm-rs.