summaryrefslogtreecommitdiff
path: root/kms++util
AgeCommit message (Collapse)Author
2017-05-31Add different YCbCr encodings.Jyri Sarha
2017-05-18testpat: white box in top left cornerTomi Valkeinen
2017-05-18draw_char: use black bg for yuvTomi Valkeinen
2017-05-17draw_rect: support yuv modesTomi Valkeinen
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
2017-03-30resmgr: fix reserve_plane()Tomi Valkeinen
reserve_plane() had inverted check, and looked for any plane type but the one that was requested. Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
2017-03-24resmgr: add sanity checksTomi Valkeinen
Add sanity checks to reserve_* methods, and return null if the give connector/crtc is null. Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
2017-03-21Merge branch 'universal-planes2' of git://github.com/jsarha/kmsxxTomi Valkeinen
2017-03-21utils: add EXIT_IFTomi Valkeinen
2017-03-20ResourceManager: reserve_generic_plane() for either primary or overlayJyri Sarha
2017-02-10use reserve_connector from ResourceManagerTomi Valkeinen
2017-02-10fix race issue in threaded test pattern drawTomi Valkeinen
2016-08-15Merge branch 'master' of git://github.com/jsarha/kmsxxTomi Valkeinen
2016-08-15Fix byte order of 24-bit formats.Jyri Sarha
2016-08-15Add missing BGR color formats to draw_test_pattern_part().Jyri Sarha
2016-08-15ResourceManager: add card()Tomi Valkeinen
2016-08-12ExtCPUFramebuffer: add size and offset paramsTomi Valkeinen
Add size and offset params to ExtCPUFramebuffer, so that we can fix fbtestpat's test pattern size on larger virtual fbdevs.
2016-08-11add basic cmake install systemTomi Valkeinen
2016-08-11Add BGR888 (BG24) and BGR565 (BG16) pixelformats.Jyri Sarha
Note colorbar does not support 24 bit modes (RGB888 or BGR888) yet.
2016-08-10kms++-util: portability fixYann E. MORIN
__STRING(x) is a glibcism (i.e. it is non-standard), that happens to be also available with uClibc, but is not with musl. Define it if not already defined, using the same trivial definition as is done by both glibg and uClibc. Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
2016-06-22Add missing <system_error> includesTomi Valkeinen
Missing <system_error> breaks compliation on gcc 4.9. Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
2016-06-16kmsutils: add VideoDeviceTomi Valkeinen
2016-06-16add ResourceManagerTomi Valkeinen
2016-06-16Support RGB888Tomi Valkeinen
2016-06-15draw_text: support YUV modesTomi Valkeinen
2016-06-11kms++util: split to subdirsTomi Valkeinen
2016-06-11kms++: organize into subdirsTomi Valkeinen
2016-06-11rename dirsTomi Valkeinen
*sequence) { struct xgi_info *const info = dev->dev_private; unsigned int cur_fence; int ret = 0; if (info == NULL) { DRM_ERROR("called with no initialization\n"); return -EINVAL; } /* Assume that the user has missed the current sequence number * by about a day rather than she wants to wait for years * using fences. */ DRM_WAIT_ON(ret, info->fence_queue, 3 * DRM_HZ, ((((cur_fence = GET_BEGIN_ID(info)) - *sequence) & BEGIN_BEGIN_IDENTIFICATION_MASK) <= (1 << 18))); info->complete_sequence = cur_fence; *sequence = cur_fence; return ret; } int xgi_set_fence_ioctl(struct drm_device * dev, void * data, struct drm_file * filp) { (void) filp; return xgi_low_level_fence_emit(dev, (u32 *) data); } int xgi_wait_fence_ioctl(struct drm_device * dev, void * data, struct drm_file * filp) { (void) filp; return xgi_low_level_fence_wait(dev, (u32 *) data); } #ifdef XGI_HAVE_FENCE static void xgi_fence_poll(struct drm_device * dev, uint32_t class, uint32_t waiting_types) { struct xgi_info * info = dev->dev_private; uint32_t signaled_types = 0; if ((info == NULL) || (class != 0)) return; DRM_SPINLOCK(&info->fence_lock); if (waiting_types) { if (waiting_types & DRM_FENCE_TYPE_EXE) { const u32 begin_id = le32_to_cpu(DRM_READ32(info->mmio_map, 0x2820)) & BEGIN_BEGIN_IDENTIFICATION_MASK; if (begin_id != info->complete_sequence) { info->complete_sequence = begin_id; signaled_types |= DRM_FENCE_TYPE_EXE; } } if (signaled_types) { drm_fence_handler(dev, 0, info->complete_sequence, signaled_types, 0); } } DRM_SPINUNLOCK(&info->fence_lock); } int xgi_fence_emit_sequence(struct drm_device * dev, uint32_t class, uint32_t flags, uint32_t * sequence, uint32_t * native_type) { int err; (void) flags; if (class != 0) return -EINVAL; err = xgi_low_level_fence_emit(dev, sequence); if (err) return err; *native_type = DRM_FENCE_TYPE_EXE; return 0; } void xgi_fence_handler(struct drm_device * dev) { struct drm_fence_manager * fm = &dev->fm; struct drm_fence_class_manager *fc = &fm->fence_class[0]; write_lock(&fm->lock); xgi_fence_poll(dev, 0, fc->waiting_types); write_unlock(&fm->lock); } int xgi_fence_has_irq(struct drm_device *dev, uint32_t class, uint32_t flags) { return ((class == 0) && (flags == DRM_FENCE_TYPE_EXE)) ? 1 : 0; } struct drm_fence_driver xgi_fence_driver = { .num_classes = 1, .wrap_diff = BEGIN_BEGIN_IDENTIFICATION_MASK, .flush_diff = BEGIN_BEGIN_IDENTIFICATION_MASK - 1, .sequence_mask = BEGIN_BEGIN_IDENTIFICATION_MASK, .has_irq = xgi_fence_has_irq, .emit = xgi_fence_emit_sequence, .flush = NULL, .poll = xgi_fence_poll, .needed_flush = NULL, .wait = NULL }; #endif /* XGI_HAVE_FENCE */