Home | History | Annotate | Download | only in planetest

Lines Matching refs:dev

15 #include "dev.h"
21 printf(" -c, --card Index of dri card (ie: /dev/dri/cardN)\n");
72 static uint32_t get_prop_id(struct sp_dev *dev,
79 p = drmModeGetProperty(dev->fd, props->props[i]);
108 struct sp_dev *dev;
114 snprintf(card_path, sizeof(card_path), "/dev/dri/card%d", card);
122 dev = calloc(1, sizeof(*dev));
123 if (!dev) {
124 printf("failed to allocate dev\n");
128 dev->fd = fd;
130 ret = drmSetClientCap(dev->fd, DRM_CLIENT_CAP_UNIVERSAL_PLANES, 1);
136 ret = drmSetClientCap(dev->fd, DRM_CLIENT_CAP_ATOMIC, 1);
142 r = drmModeGetResources(dev->fd);
148 dev->num_connectors = r->count_connectors;
149 dev->connectors = calloc(dev->num_connectors,
151 if (!dev->connectors) {
155 for (i = 0; i < dev->num_connectors; i++) {
157 dev->connectors[i].conn = drmModeGetConnector(dev->fd,
159 if (!dev->connectors[i].conn) {
164 props = drmModeObjectGetProperties(dev->fd, r->connectors[i],
171 dev->connectors[i].crtc_id_pid = get_prop_id(dev, props,
174 if (!dev->connectors[i].crtc_id_pid)
178 dev->num_encoders = r->count_encoders;
179 dev->encoders = calloc(dev->num_encoders, sizeof(*dev->encoders));
180 if (!dev->encoders) {
184 for (i = 0; i < dev->num_encoders; i++) {
185 dev->encoders[i] = drmModeGetEncoder(dev->fd, r->encoders[i]);
186 if (!dev->encoders[i]) {
192 dev->num_crtcs = r->count_crtcs;
193 dev->crtcs = calloc(dev->num_crtcs, sizeof(struct sp_crtc));
194 if (!dev->crtcs) {
198 for (i = 0; i < dev->num_crtcs; i++) {
201 dev->crtcs[i].crtc = drmModeGetCrtc(dev->fd, r->crtcs[i]);
202 if (!dev->crtcs[i].crtc) {
206 dev->crtcs[i].pipe = i;
207 dev->crtcs[i].num_planes = 0;
209 props = drmModeObjectGetProperties(dev->fd, r->crtcs[i],
216 dev->crtcs[i].mode_pid = get_prop_id(dev, props, "MODE_ID");
217 dev->crtcs[i].active_pid = get_prop_id(dev, props, "ACTIVE");
219 if (!dev->crtcs[i].mode_pid || !dev->crtcs[i].active_pid)
223 pr = drmModeGetPlaneResources(dev->fd);
228 dev->num_planes = pr->count_planes;
229 dev->planes = calloc(dev->num_planes, sizeof(struct sp_plane));
230 for(i = 0; i < dev->num_planes; i++) {
232 struct sp_plane *plane = &dev->planes[i];
234 plane->dev = dev;
235 plane->plane = drmModeGetPlane(dev->fd, pr->planes[i]);
249 for (j = 0; j < dev->num_crtcs; j++) {
251 dev->crtcs[j].num_planes++;
254 props = drmModeObjectGetProperties(dev->fd, pr->planes[i],
260 plane->crtc_pid = get_prop_id(dev, props, "CRTC_ID");
265 plane->fb_pid = get_prop_id(dev, props, "FB_ID");
270 plane->crtc_x_pid = get_prop_id(dev, props, "CRTC_X");
275 plane->crtc_y_pid = get_prop_id(dev, props, "CRTC_Y");
280 plane->crtc_w_pid = get_prop_id(dev, props, "CRTC_W");
285 plane->crtc_h_pid = get_prop_id(dev, props, "CRTC_H");
290 plane->src_x_pid = get_prop_id(dev, props, "SRC_X");
295 plane->src_y_pid = get_prop_id(dev, props, "SRC_Y");
300 plane->src_w_pid = get_prop_id(dev, props, "SRC_W");
305 plane->src_h_pid = get_prop_id(dev, props, "SRC_H");
318 return dev;
324 destroy_sp_dev(dev);
328 void destroy_sp_dev(struct sp_dev *dev)
332 if (dev->planes) {
333 for (i = 0; i< dev->num_planes; i++) {
334 if (dev->planes[i].in_use)
335 put_sp_plane(&dev->planes[i]);
336 if (dev->planes[i].plane)
337 drmModeFreePlane(dev->planes[i].plane);
338 if (dev->planes[i].bo)
339 free_sp_bo(dev->planes[i].bo);
341 free(dev->planes);
343 if (dev->crtcs) {
344 for (i = 0; i< dev->num_crtcs; i++) {
345 if (dev->crtcs[i].crtc)
346 drmModeFreeCrtc(dev->crtcs[i].crtc);
348 free(dev->crtcs);
350 if (dev->encoders) {
351 for (i = 0; i< dev->num_encoders; i++) {
352 if (dev->encoders[i])
353 drmModeFreeEncoder(dev->encoders[i]);
355 free(dev->encoders);
357 if (dev->connectors) {
358 for (i = 0; i< dev->num_connectors; i++) {
359 if (dev->connectors[i].conn)
360 drmModeFreeConnector(dev->connectors[i].conn);
362 free(dev->connectors);
365 close(dev->fd);
366 free(dev);