summaryrefslogtreecommitdiff
path: root/src
AgeCommit message (Collapse)Author
2009-10-08Clean up more i830_memory.c madness.Eric Anholt
It was cooking up insane alignment values for buffers that new libdrm was justifiably complaining about, but it turns out we don't need the alignment values anywhere because the only case they're needed, they're computed entirely by the kernel. Also, the XVMC code was passing a completely unused flag in.
2009-10-08Rename pScreen to screen.Eric Anholt
2009-10-08Rename pGC to gc.Eric Anholt
2009-10-08Rename pDraw to plain old drawable.Eric Anholt
2009-10-08Rename the xv pPriv to adaptor_priv to reflect whose private it is.Eric Anholt
2009-10-08Call pPixmaps plain old pixmaps.Eric Anholt
2009-10-08de-pCamelHungarian the Render pictures and pixmaps.Eric Anholt
2009-10-08Share several render fields between render implementations.Eric Anholt
Also, start settling on the cairo naming for things: source, mask, and dest.
2009-10-08Rename the xf86 screen private from pScrn to scrn.Eric Anholt
2009-10-08Rename the screen private from I830Ptr pI830 to intel_screen_private *intel.Eric Anholt
This is the beginning of the campaign to remove some of the absurd use of Hungarian in the driver. Not that I don't like Hungarian, but I don't need to know that pI830 is a pPointer.
2009-10-06Remove more dead UMS code.Eric Anholt
2009-10-06Remove the reg_dumper code, now that it's been moved to intel_gpu_tools.Eric Anholt
2009-10-06Remove the stepping debug app, replaced by version in intel_gpu_tools.Eric Anholt
2009-10-06Trim down the hotplug debug app.Eric Anholt
2009-10-06Remove intel_idle, replaced by intel_gpu_top in intel_gpu_tools.Eric Anholt
2009-10-06Move to kernel coding style.Eric Anholt
We've talked about doing this since the start of the project, putting it off until "some convenient time". Just after removing a third of the driver seems like a convenient time, when backporting's probably not happening much anyway.
2009-10-06Remove UMS support.Eric Anholt
At this point, the only remaining feature regressions should be the lack of overlay support (about to land), and the need to update the XVMC code to work in the presence of KMS. Acked-by: Keith Packard <keithp@keithp.com> (in principle) Acked-by: Carl Worth <cworth@cworth.org> (in principle)
2009-10-05Remove UMS overlay support.Eric Anholt
The replacement code is now landed, and the rest of UMS is about to disappear.
2009-10-05Remove error state dumping code.Eric Anholt
This is replaced by intel_gpu_dump, and would no longer be used once UMS is gone.
2009-10-05Implement drmmode overlayDaniel Vetter
This does not restore the overlay on EnterVT/disable it on LeaveVT. Does not look like this is necessary. Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch> [anholt: Hacked in avoiding the actual kernel calls with Signed-off-by: Eric Anholt <eric@anholt.net>
2009-10-05Xv: introduce an overlay halDaniel Vetter
This is the last preparatory step for overlay support with drmmode. Safe two (specially marked) function calls in the setup code, all hw accessing code goes now through these three new functions with the ums_overlay prefix. Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch> Signed-off-by: Eric Anholt <eric@anholt.net>
2009-10-05Xv: rework overlay buffer managementDaniel Vetter
The basic idea is to only pin the buffer into the gtt when the overlay hw is actually using it. This results in a few changes: - Unify data copied/buffer handling with textured video. Now offsets are always buffer relative and we just use drm_bo_map to access a buffer. - Implement double buffering using two bo's. This is necessary because we can't pin the same buffer to the gtt and map it as normal memory. - Kill XV_DOUBLE_BUFFER. With the above changes, overlay video is always doubel buffered. There is still the XvMC passthrough case, which makes the code slightly ugly. Unfortunately we can't get at the bo behind this buffer. Changes since the last review-round: - Don't overallocate by a factor of 2. - Prevent possible use-after-free issue. Signed-off-by: Eric Anholt <eric@anholt.net>
2009-10-05Xv: create xvmc_passthrough helperDaniel Vetter
This way all thes strange special cases make much more sense. Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch> Signed-off-by: Eric Anholt <eric@anholt.net>
2009-10-05Xv: scrap overlay offscreen pixmap supportDaniel Vetter
The code looks like it's been bitrotting since being copied over from the i810 driver. Furthermore painting rgb pixmaps with the overlay engine is in these days of modern compositing X an absolute no-go. And textured video doesn't support it neither, so its likely never ever used by applications. Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch> Signed-off-by: Eric Anholt <eric@anholt.net>
2009-10-05Xv: small cleanups in I830PutImageDaniel Vetter
- scrap unused variable overlay - scrap an superflous if and attach the code to the preceeding else - tiny layout fix. Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch> Signed-off-by: Eric Anholt <eric@anholt.net>
2009-10-05Xv I830PutImage splitup: extract i830_wait_for scanlineDaniel Vetter
Also scrap the unecessary variable sync in I830PutImage and the accompanying obfuscated logic. Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch> Signed-off-by: Eric Anholt <eric@anholt.net>
2009-10-05Xv I830PutImage splitup: extract i830_copy_video_dataDaniel Vetter
Just moves the code and passes back allocation failures. Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch> Signed-off-by: Eric Anholt <eric@anholt.net>
2009-10-05Xv I830PutImage splitup: extract i830_setup_video_bufferDaniel Vetter
Just move the code and pass back allocation failures. Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch> Signed-off-by: Eric Anholt <eric@anholt.net>
2009-10-05Xv I830PutImage splitup: extract i830_dst_pitch_and_sizeDaniel Vetter
Just moves the code. Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch> Signed-off-by: Eric Anholt <eric@anholt.net>
2009-10-05Xv: kill destId in I830PutImageDaniel Vetter
It's only used to remember that XvMC has ỲV12 as output. is_planar_fourcc already takes care of that in all necessary cases. Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch> Signed-off-by: Eric Anholt <eric@anholt.net>
2009-10-05Xv: kill hw double buffering logicDaniel Vetter
The idea for the hw double buffering support is to program two fixed buffers and then only switch buffers in the OCMD register. But the driver as-is always programs the new buffer address (in both register sets when double buffered). Therefore we gain nothing by using this hw capability. Scrap the software support for it. When double buffered, we now allocate just a buffer of size 2*size and switch between the two parts purely in software. To make reviewing this easier, I'll shortly explain the differences of how double-buffering (i.e. tear-free video) is achieved before and after this change: - When double buffer, allocate a buffer twice the size (unchanged). - Depending upon the currently shown buffer-half, copy the new frame into the other buffer-half. In the old code this is done by using the right set of buffer offsets, either *Buf0Offset or *Buf1Offset. The new code simply programs the offset for the right buffer-half into the single set of offsets. The end-result is unchanged. Now the big difference in hw-programming: Old: Programm new buffer offset into both sets of _hw_ buffer offset registers. Depending upon the current _sw_ buffer, select the _hw_ buffer and program this into the OCMD register. This just complicates matters unnecessarly. New: Just always use the hw buffer 0. And then it's again the same story in both old and new code: - Execute an overlay flip (MI_OVERLAY_FLIP) to read in the contents of the hw registers into the shadow hw registers (which are actually being used by the overlay, not the ones we write stuff into). This is synchronized with the respective crtc vblank by the hw. Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch> Signed-off-by: Eric Anholt <eric@anholt.net>
2009-10-05Xv: use is_planar_fourcc helper some moreDaniel Vetter
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch> Signed-off-by: Eric Anholt <eric@anholt.net>
2009-10-05Xv: introduce planar memcpy helperDaniel Vetter
Reduced 3 copies of the same code to one. Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch> Signed-off-by: Eric Anholt <eric@anholt.net>
2009-10-05Xv: rename i830_display_video to i830_display_overlayDaniel Vetter
This function only programs the overlay and is never called for textured video. Make this obvious. Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch> Signed-off-by: Eric Anholt <eric@anholt.net>
2009-10-05Xv i830_display_video splitup: extract i830_overlay_cmdDaniel Vetter
This slightly moves around (and simplifies) the OSTRIDE reg programming, too. Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch> Signed-off-by: Eric Anholt <eric@anholt.net>
2009-10-05Xv i830_display_video splitup: extract i830_calc_src_regsDaniel Vetter
Also introduce an is_planar_fourcc helper. I'll use that one later. In i830_display_video this changeset moves the XVMC case (previously obscured as the default case) around. I've figured this default case does not make sense, here's why: XvMC is everywhere else handled as a planar format (e.g. in the register programming a few lines down). Furthermore the id variable gets mapped to FOURCC_YV12 if IS_I915(pI830) is true in I830PutImage. There's a second caller in the offscreen overlay support code. But I think that code is bitrotten and not reliable as an information source. So we have a different behaviour only for id=FOURCC_XVMC and i965 class hw (i830 class doesn't have xvmc). I've crawled through various sources/intel documentations. Finally in the textured video implemention for i965 class hw (src/i965_video.c) I've found a switch statement that puts XVMC into the same case as I420 and YV12. So also in i965 class hw xvmc uses a planar format. In conclusion I claim that this code was bogus and XvMC on i965 class hw over Xv overlay was most likely broken. Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch> Signed-off-by: Eric Anholt <eric@anholt.net>
2009-09-22Add new backlight driver "samsung".Matthias Hopf
2009-09-22Skip setting tv format property if output crtc is NULLZhao Yakui
When TV is not connected and X start, after plugging TV cable again, system will crash because output crtc is NULL. This patch will return, do not handle crtc immediately, meanwhile set value will be effective until user really enable output by xrandr command. Signed-off-by: Ma Ling <ling.ma@intel.com> Signed-off-by: Zhao Yakui <yakui.zhao@intel.com>
2009-09-22Check whether the DVI-I/D is connected or disconnected based on EDIDZhao Yakui
When the monitor is digital type for SDVO-DVI D, there should exist the EDID. If there is no EDID, it should be detected as disconnected. Signe-off-by: Zhao Yakui <yakui.zhao@intel.com>
2009-09-22Revert "8xx: Fallback for any non-affine transformation."Chris Wilson
This reverts commit 505025053d66d415e1c23ac858b9238fa8541d37. In theory, the non-affine paths work -- at least for the stated test case, so re-enable them and avoid the slow work-around. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2009-09-22i8xx: Format projective texture coordinates correctly.Keith Packard
Projective texture coordinates must be delivered as TEXCOORDFMT_3D using TEXCOORDTYPE_HOMOGENOUS. This meant selecting the correct type in i830_texture_setup, the correct format in i830_emit_composite_state and sending only 3 coordinates in i830_emit_composite_primitive. Signed-off-by: Keith Packard <keithp@keithp.com> [ickle: tweaked to fix up a couple of use-before-initialised] Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2009-09-21Split i915/i830 composite_emit_primitive into two functions.Keith Packard
The i915 and i830 take similar but different data when emitting the primitives, instead of trying to share code here, just split this apart and avoid potentially breaking things later on. Signed-off-by: Keith Packard <keithp@keithp.com>
2009-09-21Remove DGA support from the driver.Keith Packard
The xf86DiDGA code required that the scanout buffer always be mappable, stay be at a fixed address in the aperture and have a constant size. With frame buffer resizing, the latter two are no longer true, and with KMS, we'd really prefer to not allow the former. The only option available to the driver is to completely disable DGA as the modes code has internal calls to the xf86DiDGA code when fetching new modes from the hardware. A fix for the DiDGA code will be added to the X server which will automatically initialize DGA for mode switching and input, but not frame buffer access, and not require any driver cooperation. Thus, the correct solution is for the driver to not call xf86DiDGAInit at all. For old servers, this eliminates a potential catastrophic problem where random memory is written by the X server. New servers will get the DIX-based behaviour automatically. Signed-off-by: Keith Packard <keithp@keithp.com>
2009-09-21Remove vestigial internal rotation which broke KMS DGA/VidMode modesetting.Keith Packard
Pre-2.0, the driver supported rotation internally, rather than relying on the X server rotation support. The last piece of this dealt with rotating the mouse coordinates and also tried to preserve rotation across DGA/VidModeExtension modesetting requests. That latter bit of code broke under KMS as the rotation value was never initialized, and when set to zero would create an invalid configuration. This would confuse xrandr which would bail before making any changes, leaving the user without a way to recover. Signed-off-by: Keith Packard <keithp@keithp.com>
2009-09-218xx: Fallback for any non-affine transformation.Carl Worth
There are definitely bugs in the 8xx code dealing with non-affine transformations. Disable that code for now to get things working. Fixes bug #22947 ([855GM, xf86-video-intel-2.8.0] "Freeze" when RENDER extension is being used)
2009-09-21More dumps for Arrandale LVDSZhenyu Wang
Signed-off-by: Zhenyu Wang <zhenyuw@linux.intel.com>
2009-09-17Don't destroy bufmgr at CloseScreen timeKeith Packard
Under KMS, the bufmgr is not initialized at InitOutput time and so it won't be re-initialized during server regen. Thus we must leave the bufmgr running during regen and cannot destroy it in CloseScreen. Under UMS, each place the bufmgr is initialized, it checks to see if it has already happened. Hence, we can safely leave the bufmgr running across server regen for UMS too. Signed-off-by: Keith Packard <keithp@keithp.com>
2009-09-17Make sure DRM output properties are freed after we're done with them.Keith Packard
drmmode_output_get_modes was fetching output properties but only freeing some of them. Signed-off-by: Keith Packard <keithp@keithp.com>
2009-09-15Eliminate cursor flickerJesse Barnes
We can update the cursor without hiding and showing it. In fact, doing the hide/show causes noticable flicker when running in KMS mode. Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>
2009-09-14Avoid fallbacks for compositing gradient patternsChris Wilson
Currently when asked to composite using a gradient source or mask, we fallback to using fbComposite(). This has the side-effect of causing a readback on the destination surface, stalling the GPU pipeline. Instead, like uxa_trapezoids(), we can use pixman to fill a scratch pixmap and then copy that to an offscreen pixmap for use with uxa_composite(). Speedups on i915: firefox-talos-svg: 710378.14 -> 549262.96: 1.29x speedup No slowdowns. Thanks to Søeren Sandmann Pedersen for spotting the missing ValidatePicture(). Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>