summaryrefslogtreecommitdiff
path: root/src/mesa/drivers/dri/intel/intel_buffers.c
AgeCommit message (Collapse)Author
2010-10-13Drop GLcontext typedef and use struct gl_context insteadKristian Høgsberg
2010-06-08intel: Flag NEW_BUFFERS when changing draw buffers.Eric Anholt
There were entries to this function (most imporantly, prepare_render -> update_renderbuffers) that wouldn't have had NEW_BUFFERS set, but brw_wm_surface_state (the i965 state tracking the drawing regions) expected this to change.
2010-03-23i965: Stop abusing ctx->NewState flags for storing driver internal changes.Eric Anholt
We're still abusing the flags by putting them where our driver stores ctx->NewState changes. Making them into more restricted state change flags would be a project for later. Fixes a failure where calling intel_draw_buffer() too often would trip up Mesa assertions about when Mesa state could get changed, when it hadn't. Bug #27034.
2010-02-17intel: Implement the DRI2 invalidate function properlyKristian Høgsberg
This uses a stamp mechanisms to mark the DRI drawable as invalid. Instead of immediately updating the buffers we just bump the drawable stamp and call out to DRI2GetBuffers "later". "Later" used to be at LOCK_HARDWARE time, and this patch brings back callouts at the points where we used to call LOCK_HARDWARE. A new function, intel_prepare_render(), is called where we used to call LOCK_HARDWARE, and if the buffers are invalid, we call out to DRI2GetBuffers there. This lets us invalidate buffers only when notified instead of on every glViewport() call. If the loader calls the DRI invalidate entrypoint, we disable viewport triggered buffer invalidation. Additionally, we can clean up the old viewport mechanism a bit, since we can just invalidate the buffers and not worry about reentrancy and whatnot.
2010-01-30intel: Remove unnecessary headers.Vinson Lee
2010-01-26intel: Use a handy helper in glReadPixels source clipping.Eric Anholt
2010-01-26intel: Remove the remaining cliprects code from DRI1.Eric Anholt
2010-01-25Merge branch 'mesa_7_7_branch'Brian Paul
Conflicts: src/mesa/drivers/dri/intel/intel_screen.c src/mesa/drivers/dri/intel/intel_swapbuffers.c src/mesa/drivers/dri/r300/r300_emit.c src/mesa/drivers/dri/r300/r300_ioctl.c src/mesa/drivers/dri/r300/r300_tex.c src/mesa/drivers/dri/r300/r300_texstate.c
2010-01-23intel: Remove unnecessary headers.Vinson Lee
2010-01-04intel: Drop more cliprect bookkeepingKristian Høgsberg
2010-01-04Remove leftover __DRI{screen,drawable,context}Private referencesKristian Høgsberg
As part of the DRI driver interface rewrite I merged __DRIscreenPrivate and __DRIscreen, and likewise for __DRIdrawablePrivate and __DRIcontextPrivate. I left typedefs in place though, to avoid renaming all the *Private use internal to the driver. That was probably a mistake, and it turns out a one-line find+sed combo can do the mass rename. Better late than never.
2009-12-28intel: Allow binding a stencil but not a depth buffer.Eric Anholt
Wine's d3d9 visual.c testcase tries this a lot, so I've added some piglit tests (fbo-nodepth-test, fbo-nostencil-test, fbo-stencil-only) and enabled it.
2009-12-15Merge branch 'mesa_7_6_branch' into mesa_7_7_branchIan Romanick
Conflicts: src/gallium/drivers/softpipe/sp_quad_blend.c
2009-12-15intel: Fallback to software if drawable size is > MaxRenderbufferSizeIan Romanick
This prevents the mystery blank window if, for example, glxgears is resized larger than 2048 wide on 915. Since the Intel drivers in Mesa 7.6 lack GTT mapped fallbacks, the performance is a slideshow at best. On Mesa 7.7 and later the performance is much better.
2009-11-03intel: avoid unnecessary front buffer flushing/updatingBrian Paul
Before, if we just called glXMakeCurrent() and didn't render anything we'd still trigger a flushFrontBuffer() call. Now only set the intel->front_buffer_dirty field at state validation time just before we draw something. NOTE: additional calls to intel_check_front_buffer_rendering() might be needed if I missed some rendering paths.
2009-10-28Merge branch 'texformat-rework'Brian Paul
Conflicts: src/mesa/drivers/dri/radeon/radeon_fbo.c src/mesa/drivers/dri/s3v/s3v_tex.c src/mesa/drivers/dri/s3v/s3v_xmesa.c src/mesa/drivers/dri/trident/trident_context.c src/mesa/main/debug.c src/mesa/main/mipmap.c src/mesa/main/texformat.c src/mesa/main/texgetimage.c
2009-10-27intel: fix comment, formattingBrian Paul
2009-10-21intel: use MESA_FORMAT_S8_Z24 format and avoid z24s8/s8z24 conversionsBrian Paul
2009-10-08mesa: remove a bunch of gl_renderbuffer fieldsBrian Paul
_ActualFormat is replaced by Format (MESA_FORMAT_x). ColorEncoding, ComponentType, RedBits, GreenBits, BlueBits, etc. are all replaced by MESA_FORMAT_x queries.
2009-06-19intel: Also get the DRI2 front buffer when doing front buffer reading.Eric Anholt
2009-05-15i915: Use Stencil.Enabled instead of Stencil._Enabled in DrawBuffers.Eric Anholt
The _Enabled field isn't updated at the point that DrawBuffers is called, and the Driver.Enable() function does the testing for stencil buffer presence anyway. bug #21608 for Radeon
2009-05-01mesa: in glReadBufer() set _NEW_BUFFERS, not _NEW_PIXELBrian Paul
Since GL_READ_BUFFER is historically part of the gl_pixel_attrib group it made sense to signal changes with _NEW_PIXEL. But now with FBOs it's also part of the framebuffer state. Now _NEW_PIXEL strictly indicates pixels transfer state changes. This change avoids framebuffer state validation when any random bit of pixel-transfer state is set. DRI drivers updated too: don't check _NEW_COLOR when updating framebuffer state. I think that was just copied from the Xlib driver because we care about dither enable/disable state there.
2009-05-01Test either GL_FRONT_LEFT or GL_FRONT for front-buffer renderingIan Romanick
For non-stereo visuals, which is all we support, we treat GL_FRONT_LEFT as GL_FRONT. However, they are technically different, and they have different enum values. Test for either one to determine if we're in front-buffer rendering mode. This fix was suggested by Pierre Willenbrock. Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
2009-04-24intel / DRI2: When available, use DRI2GetBuffersWithFormatIan Romanick
This interface gives the driver two important features. First, it can allocate the (fake) front-buffer only when needed. Second, it can tell the buffer allocator the format of buffers being allocated. This enables support for back-buffer and depth-buffer with different bits per pixel. Signed-off-by: Ian Romanick <ian.d.romanick@intel.com> Reviewed-by: Kristian Høgsberg <krh@redhat.com>
2009-04-14DRI2: Don't fault on NULL DrawBufferIan Romanick
It is possible for ctx->DrawBuffer to be NULL, so don't fault when that happens. This change is not being committed to master because it doesn't appear to be necessary there. Signed-off-by: Ian Romanick <ian.d.romanick@intel.com> Cherry picked from mesa_7_4_branch, commit 49e0c74ddd91900fc4effb6d305d56e0563b456d
2009-04-09intel / DRI2: Track and flush front-buffer renderingIan Romanick
Track two flags: whether or not front-buffer rendering is currently enabled and whether or not front-buffer rendering has been enabled since the last glFlush. If the second flag is set, the front-buffer is flushed via a loader call back. If the first flag is cleared, the second flag is cleared at this time. Signed-off-by: Ian Romanick <ian.d.romanick@intel.com> Reviewed-by: Kristian Høgsberg <krh@redhat.com>
2009-03-05i965: Add a note about why the _NEW_STENCIL is required in draw_buffers.Eric Anholt
2009-03-02mesa: use Stencil._Enabled field instead of Stencil.EnabledBrian Paul
2009-01-30i915: Only call CalcViewport from DrawBuffers instead of Viewport.Eric Anholt
This saves an inadvertent round-trip to the X Server on DrawBuffers, which was hurting some metaops.
2009-01-26intel: move glClear-related code into new intel_clear.c fileBrian Paul
2009-01-26intel: Move swap-related functions from intel_buffers.c to new ↵Brian Paul
intel_swapbuffers.c
2009-01-23intel: fix the mismerge of the vblank pipe enable sanity checkJesse Barnes
Fix the last merge fix, had the blocks ordered incorrectly.
2009-01-23intel: move pipe enable sanity check to where it belongsJesse Barnes
Bah, applied the patches in the wrong order, not Owain's fault...
2009-01-23intel: fix vblank crtc selection with DRI1 when only one pipe is enabled.Owain Ainsworth
On Mobile chipsets, we often enable PipeB instead of PipeA, but the test in here was insufficient, falling back to pipe A if the area intersection returned zero. Therefore, in the case where a window went off to the top of the left of the screen, it would freeze, waiting on the wrong vblank. Fix this mess by checking the sarea for a crtc being zero sized, and in that case always default to the other one.
2009-01-23intel: Prevent an "irq is not working" printf when only pipe B is enabled.Owain G. Ainsworth
intelMakeCurrent is called before intelWindowMoved (in fact, it calls it), so calculation of the correct vblank crtc has not happened yet. Fix this by making a function that fixes up a set of vblank flags and call if from both functions.
2009-01-22intel: remove/disable the "paired depth/stencil" codeBrian Paul
We only allow combined depth+stencil renderbuffers so the complicated code for splitting and combining separate depth and stencil buffers is no longer needed.
2009-01-22intel: asst clean-ups, simplifications in intel_draw_buffer()Brian Paul
2009-01-22i965: minor reformattingBrian Paul
2009-01-20[intel] Go back to using the typedef for the sarea structTimo Aaltonen
The upstream linux kernel headers and libdrm kernel headers disagree on the tag name for the sarea struct: _drm_i915_sarea vs drm_i915_sarea. They both typedef it to drm_i915_sarea_t though, so just use that.
2009-01-20Remove intel pageflipping support in its entirety.Owain G. Ainsworth
It's been broken and deprecated for a while, so it's time to die. This has the wonderful benefit of cleaning up the code a fair amount; making it marginally less twisty. I'm unsure if the for loops in IntelWindowMoved are still needed.
2008-12-23Remove third buffer support from Mesa.Dave Airlie
This is part of the deprecated pageflipping infrastructure.
2008-10-28intel: Don't keep intel->pClipRects, and instead just calculate it when needed.Eric Anholt
This avoids issues with dereferencing stale cliprects around intel_draw_buffer time. Additionally, take advantage of cliprects staying constant for FBOs and DRI2, and emit cliprects in the batchbuffer instead of having to flush batch each time they change.
2008-10-07intel: Push flushing for cliprects changes down into the cliprects changes.Eric Anholt
This lets us short-circuit when we're leaving the same cliprects in place, which becomes quite common with metaops clears, and may be useful for some of our FBO paths.
2008-09-18mesa: added "main/" prefix to includes, remove some -I paths from ↵Brian Paul
Makefile.template
2008-08-29DRI2: Drop sarea, implement swap buffers in the X server.Kristian Høgsberg
2008-08-24Revert "Revert "Merge branch 'drm-gem'""Dave Airlie
This reverts commit 7c81124d7c4a4d1da9f48cbf7e82ab1a3a970a7a.
2008-08-24Revert "Merge branch 'drm-gem'"Dave Airlie
This reverts commit 53675e5c05c0598b7ea206d5c27dbcae786a2c03. Conflicts: src/mesa/drivers/dri/i965/brw_wm_surface_state.c
2008-07-25Merge branch 'master' into drm-gemIan Romanick
Conflicts: src/mesa/drivers/dri/common/dri_bufmgr.c src/mesa/drivers/dri/i965/brw_wm_surface_state.c
2008-07-24intel: remove buffer swap debug outputJesse Barnes
Accidentally pushed as part of the last commit.
2008-07-22intel: fix buffer swaps and enable page flipping on 965Jesse Barnes
Some buffer swap intel render buffer fields (pf_num_pages & vbl_pending) are also used for page flipping, so enable the code that sets & updates them on 965. This allows buffer swaps and page flips to work on 965 and prevents hangs in LOCK_HARDWARE in the buffer swap case due to an uninitialized vbl_pending field. Fixes FDO #16118.