Mesa (master): gallium-docs: Add note on scissor.
Module: Mesa Branch: master Commit: 8cf1af45075a1bf8c302a513566b7ef2314264b7 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=8cf1af45075a1bf8c302a513566b7ef2314264b7 Author: Corbin Simpson Date: Mon Jan 25 01:12:30 2010 -0800 gallium-docs: Add note on scissor. --- src/gallium/docs/source/context.rst |5 - 1 files changed, 4 insertions(+), 1 deletions(-) diff --git a/src/gallium/docs/source/context.rst b/src/gallium/docs/source/context.rst index b7b625d..78b01cc 100644 --- a/src/gallium/docs/source/context.rst +++ b/src/gallium/docs/source/context.rst @@ -54,7 +54,10 @@ objects. They all follow simple, one-method binding calls, e.g. * ``set_blend_color`` * ``set_clip_state`` * ``set_polygon_stipple`` -* ``set_scissor_state`` +* ``set_scissor_state`` sets the bounds for the scissor test, which culls + pixels before blending to render targets. If the :ref:`Rasterizer` does + not have the scissor test enabled, then the scissor bounds never need to + be set since they will not be used. * ``set_viewport_state`` * ``set_vertex_elements`` ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (mesa_7_7_branch): st/xorg: Fix warning
Module: Mesa Branch: mesa_7_7_branch Commit: 16cf7e14a6dee85fadc0ab4e7c066288c3362352 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=16cf7e14a6dee85fadc0ab4e7c066288c3362352 Author: Jakob Bornecrantz Date: Thu Jan 21 21:28:14 2010 +0100 st/xorg: Fix warning --- src/gallium/state_trackers/xorg/xorg_dri2.c |2 ++ 1 files changed, 2 insertions(+), 0 deletions(-) diff --git a/src/gallium/state_trackers/xorg/xorg_dri2.c b/src/gallium/state_trackers/xorg/xorg_dri2.c index 468563e..83dc92e 100644 --- a/src/gallium/state_trackers/xorg/xorg_dri2.c +++ b/src/gallium/state_trackers/xorg/xorg_dri2.c @@ -375,6 +375,7 @@ xorg_dri2_init(ScreenPtr pScreen) ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; modesettingPtr ms = modesettingPTR(pScrn); DRI2InfoRec dri2info; +#if DRI2INFOREC_VERSION >= 2 int major, minor; if (xf86LoaderCheckSymbol("DRI2Version")) { @@ -384,6 +385,7 @@ xorg_dri2_init(ScreenPtr pScreen) major = 1; minor = 0; } +#endif dri2info.version = DRI2INFOREC_VERSION; dri2info.fd = ms->fd; ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (mesa_7_7_branch): st/xorg: Export helper function for detecting modesetting
Module: Mesa Branch: mesa_7_7_branch Commit: 36fd55f9f03b00263ee1ccf22bbb50e5ba048e80 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=36fd55f9f03b00263ee1ccf22bbb50e5ba048e80 Author: Jakob Bornecrantz Date: Thu Jan 21 21:23:22 2010 +0100 st/xorg: Export helper function for detecting modesetting --- src/gallium/state_trackers/xorg/xorg_driver.c | 22 ++ src/gallium/state_trackers/xorg/xorg_winsys.h |1 + 2 files changed, 23 insertions(+), 0 deletions(-) diff --git a/src/gallium/state_trackers/xorg/xorg_driver.c b/src/gallium/state_trackers/xorg/xorg_driver.c index 41bfcd0..c180f0b 100644 --- a/src/gallium/state_trackers/xorg/xorg_driver.c +++ b/src/gallium/state_trackers/xorg/xorg_driver.c @@ -110,6 +110,28 @@ xorg_tracker_set_functions(ScrnInfoPtr scrn) scrn->ValidMode = drv_valid_mode; } +Bool +xorg_tracker_have_modesetting(ScrnInfoPtr pScrn, struct pci_device *device) +{ +char *BusID = xalloc(64); +sprintf(BusID, "pci:%04x:%02x:%02x.%d", + device->domain, device->bus, + device->dev, device->func); + +if (drmCheckModesettingSupported(BusID)) { + xf86DrvMsgVerb(pScrn->scrnIndex, X_INFO, 0, + "Drm modesetting not supported %s\n", BusID); + xfree(BusID); + return FALSE; +} + +xf86DrvMsgVerb(pScrn->scrnIndex, X_INFO, 0, + "Drm modesetting supported on %s\n", BusID); + +xfree(BusID); +return TRUE; +} + /* * Internal function definitions diff --git a/src/gallium/state_trackers/xorg/xorg_winsys.h b/src/gallium/state_trackers/xorg/xorg_winsys.h index 47ee4b9..865733b 100644 --- a/src/gallium/state_trackers/xorg/xorg_winsys.h +++ b/src/gallium/state_trackers/xorg/xorg_winsys.h @@ -45,5 +45,6 @@ void xorg_tracker_set_functions(ScrnInfoPtr scrn); const OptionInfoRec * xorg_tracker_available_options(int chipid, int busid); +Bool xorg_tracker_have_modesetting(ScrnInfoPtr pScrn, struct pci_device *device); #endif ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (mesa_7_7_branch): vmware/xorg: Export pci_probe function for ugly chain-loading
Module: Mesa Branch: mesa_7_7_branch Commit: a3b783ea294f348bf3424eeb4170dd7f0741519a URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=a3b783ea294f348bf3424eeb4170dd7f0741519a Author: Jakob Bornecrantz Date: Thu Jan 21 21:32:28 2010 +0100 vmware/xorg: Export pci_probe function for ugly chain-loading --- src/gallium/winsys/drm/vmware/xorg/vmw_xorg.c | 10 +- 1 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/gallium/winsys/drm/vmware/xorg/vmw_xorg.c b/src/gallium/winsys/drm/vmware/xorg/vmw_xorg.c index 4b20871..cd273d0 100644 --- a/src/gallium/winsys/drm/vmware/xorg/vmw_xorg.c +++ b/src/gallium/winsys/drm/vmware/xorg/vmw_xorg.c @@ -34,10 +34,10 @@ #include "vmw_hook.h" static void vmw_xorg_identify(int flags); -static Bool vmw_xorg_pci_probe(DriverPtr driver, - int entity_num, - struct pci_device *device, - intptr_t match_data); +_X_EXPORT Bool vmw_xorg_pci_probe(DriverPtr driver, + int entity_num, + struct pci_device *device, + intptr_t match_data); static const struct pci_id_match vmw_xorg_device_match[] = { {0x15ad, PCI_MATCH_ANY, PCI_MATCH_ANY, PCI_MATCH_ANY, 0, 0, 0}, @@ -126,7 +126,7 @@ vmw_xorg_identify(int flags) vmw_xorg_chipsets); } -static Bool +_X_EXPORT Bool vmw_xorg_pci_probe(DriverPtr driver, int entity_num, struct pci_device *device, intptr_t match_data) { ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (mesa_7_7_branch): st/xorg: Improve options and print them to log
Module: Mesa Branch: mesa_7_7_branch Commit: 0b482c4fbe69a807bb69bf92f37e362f818c664d URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=0b482c4fbe69a807bb69bf92f37e362f818c664d Author: Jakob Bornecrantz Date: Fri Jan 22 18:28:40 2010 +0100 st/xorg: Improve options and print them to log Set 2D acceleration to off by default Get fallback debugging from the Xorg config Also print if 3D acceleration is enabled --- src/gallium/state_trackers/xorg/xorg_driver.c | 20 +--- src/gallium/state_trackers/xorg/xorg_tracker.h |1 + 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/src/gallium/state_trackers/xorg/xorg_driver.c b/src/gallium/state_trackers/xorg/xorg_driver.c index c180f0b..0ff6c52 100644 --- a/src/gallium/state_trackers/xorg/xorg_driver.c +++ b/src/gallium/state_trackers/xorg/xorg_driver.c @@ -78,11 +78,13 @@ typedef enum { OPTION_SW_CURSOR, OPTION_2D_ACCEL, +OPTION_DEBUG_FALLBACK, } drv_option_enums; static const OptionInfoRec drv_options[] = { {OPTION_SW_CURSOR, "SWcursor", OPTV_BOOLEAN, {0}, FALSE}, {OPTION_2D_ACCEL, "2DAccel", OPTV_BOOLEAN, {0}, FALSE}, +{OPTION_DEBUG_FALLBACK, "DebugFallback", OPTV_BOOLEAN, {0}, FALSE}, {-1, NULL, OPTV_NONE, {0}, FALSE} }; @@ -670,10 +672,11 @@ drv_screen_init(int scrnIndex, ScreenPtr pScreen, int argc, char **argv) xf86SetBlackWhitePixels(pScreen); +ms->accelerate_2d = xf86ReturnOptValBool(ms->Options, OPTION_2D_ACCEL, FALSE); +ms->debug_fallback = xf86ReturnOptValBool(ms->Options, OPTION_DEBUG_FALLBACK, TRUE); + if (ms->screen) { - ms->exa = xorg_exa_init(pScrn, xf86ReturnOptValBool(ms->Options, - OPTION_2D_ACCEL, TRUE)); - ms->debug_fallback = debug_get_bool_option("XORG_DEBUG_FALLBACK", TRUE); + ms->exa = xorg_exa_init(pScrn, ms->accelerate_2d); xorg_xv_init(pScreen); #ifdef DRI2 @@ -681,6 +684,17 @@ drv_screen_init(int scrnIndex, ScreenPtr pScreen, int argc, char **argv) #endif } +xf86DrvMsg(pScrn->scrnIndex, X_INFO, "2D Acceleration is %s\n", + ms->screen && ms->accelerate_2d ? "enabled" : "disabled"); +xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Fallback debugging is %s\n", + ms->debug_fallback ? "enabled" : "disabled"); +#ifdef DRI2 +xf86DrvMsg(pScrn->scrnIndex, X_INFO, "3D Acceleration is %s\n", + ms->screen ? "enabled" : "disabled"); +#else +xf86DrvMsg(pScrn->scrnIndex, X_INFO, "3D Acceleration is disabled\n"); +#endif + miInitializeBackingStore(pScreen); xf86SetBackingStore(pScreen); xf86SetSilkenMouse(pScreen); diff --git a/src/gallium/state_trackers/xorg/xorg_tracker.h b/src/gallium/state_trackers/xorg/xorg_tracker.h index c0cfbe6..b5915d2 100644 --- a/src/gallium/state_trackers/xorg/xorg_tracker.h +++ b/src/gallium/state_trackers/xorg/xorg_tracker.h @@ -112,6 +112,7 @@ typedef struct _modesettingRec /* exa */ struct exa_context *exa; Bool noEvict; +Bool accelerate_2d; Bool debug_fallback; /* winsys hocks */ ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (master): llvmpipe: Remove lp_tex_sample_c.c again.
Module: Mesa Branch: master Commit: 4c082faa7e0887205fe9158320884c177f416b80 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=4c082faa7e0887205fe9158320884c177f416b80 Author: José Fonseca Date: Mon Jan 25 11:54:54 2010 + llvmpipe: Remove lp_tex_sample_c.c again. Popped back to life in some merge. Not necessary even as a reference, since it is identical to softpipe's sp_tex_sample.c with renamed symbols. --- src/gallium/drivers/llvmpipe/lp_tex_sample_c.c | 1712 1 files changed, 0 insertions(+), 1712 deletions(-) Diff: http://cgit.freedesktop.org/mesa/mesa/diff/?id=4c082faa7e0887205fe9158320884c177f416b80 ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (mesa_7_7_branch): vmware/xorg: Do buffer round-robin logic differently
Module: Mesa Branch: mesa_7_7_branch Commit: 6877c5de3c3ff39da514a74928ea270138cddff9 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=6877c5de3c3ff39da514a74928ea270138cddff9 Author: Jakob Bornecrantz Date: Mon Jan 25 12:27:47 2010 +0100 vmware/xorg: Do buffer round-robin logic differently --- src/gallium/winsys/drm/vmware/xorg/vmw_video.c |3 ++- 1 files changed, 2 insertions(+), 1 deletions(-) diff --git a/src/gallium/winsys/drm/vmware/xorg/vmw_video.c b/src/gallium/winsys/drm/vmware/xorg/vmw_video.c index b065b96..ff3b992 100644 --- a/src/gallium/winsys/drm/vmware/xorg/vmw_video.c +++ b/src/gallium/winsys/drm/vmware/xorg/vmw_video.c @@ -649,7 +649,8 @@ vmw_video_port_play(ScrnInfoPtr pScrn, struct vmw_video_port *port, return XvBadAlloc; } -port->currBuf = ++port->currBuf & (VMWARE_VID_NUM_BUFFERS - 1); +if (++(port->currBuf) >= VMWARE_VID_NUM_BUFFERS) + port->currBuf = 0; return Success; } ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (master): pipebuffer: Reapply the mesa_7_7_branch's changes.
Module: Mesa Branch: master Commit: cb64ca5066a3f4611680aa8c9a5d1caf68538cb5 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=cb64ca5066a3f4611680aa8c9a5d1caf68538cb5 Author: José Fonseca Date: Mon Jan 25 13:17:47 2010 + pipebuffer: Reapply the mesa_7_7_branch's changes. After the last mesa_7_7_branch merge the old master code remained, instead of the newer mesa_7_7_branch's code. This commit makes both branches match, modulo interface changes. Note: future mesa_7_7_branch -> master merges will most likely hit conflicts in these files. Unless otherwise stated, the mesa_7_7_branch is the reference. --- .../auxiliary/pipebuffer/pb_buffer_fenced.c| 1067 ++-- .../auxiliary/pipebuffer/pb_buffer_fenced.h| 37 - 2 files changed, 769 insertions(+), 335 deletions(-) diff --git a/src/gallium/auxiliary/pipebuffer/pb_buffer_fenced.c b/src/gallium/auxiliary/pipebuffer/pb_buffer_fenced.c index a4b78f1..ba087ac 100644 --- a/src/gallium/auxiliary/pipebuffer/pb_buffer_fenced.c +++ b/src/gallium/auxiliary/pipebuffer/pb_buffer_fenced.c @@ -1,6 +1,6 @@ /** * - * Copyright 2007-2009 VMware, Inc. + * Copyright 2007-2010 VMware, Inc. * All Rights Reserved. * * Permission is hereby granted, free of charge, to any person obtaining a @@ -28,9 +28,9 @@ /** * \file * Implementation of fenced buffers. - * - * \author Jose Fonseca - * \author Thomas Hellström + * + * \author Jose Fonseca + * \author Thomas Hellström */ @@ -50,6 +50,7 @@ #include "pb_buffer.h" #include "pb_buffer_fenced.h" +#include "pb_bufmgr.h" @@ -59,32 +60,79 @@ #define SUPER(__derived) (&(__derived)->base) -struct fenced_buffer_list +struct fenced_manager { - pipe_mutex mutex; - + struct pb_manager base; + struct pb_manager *provider; struct pb_fence_ops *ops; - - pb_size numDelayed; - struct list_head delayed; - -#ifdef DEBUG - pb_size numUnfenced; + + /** +* Maximum buffer size that can be safely allocated. +*/ + pb_size max_buffer_size; + + /** +* Maximum cpu memory we can allocate before we start waiting for the +* GPU to idle. +*/ + pb_size max_cpu_total_size; + + /** +* Following members are mutable and protected by this mutex. +*/ + pipe_mutex mutex; + + /** +* Fenced buffer list. +* +* All fenced buffers are placed in this listed, ordered from the oldest +* fence to the newest fence. +*/ + struct list_head fenced; + pb_size num_fenced; + struct list_head unfenced; -#endif + pb_size num_unfenced; + + /** +* How much temporary CPU memory is being used to hold unvalidated buffers. +*/ + pb_size cpu_total_size; }; /** + * Fenced buffer. + * * Wrapper around a pipe buffer which adds fencing and reference counting. */ struct fenced_buffer { + /* +* Immutable members. +*/ + struct pb_buffer base; - + struct fenced_manager *mgr; + + /* +* Following members are mutable and protected by fenced_manager::mutex. +*/ + + struct list_head head; + + /** +* Buffer with storage. +*/ struct pb_buffer *buffer; + pb_size size; + struct pb_desc desc; - /* FIXME: protect access with mutex */ + /** +* Temporary CPU storage data. Used when there isn't enough GPU memory to +* store the buffer. +*/ + void *data; /** * A bitmask of PIPE_BUFFER_USAGE_CPU/GPU_READ/WRITE describing the current @@ -93,15 +141,22 @@ struct fenced_buffer unsigned flags; unsigned mapcount; + struct pb_validate *vl; unsigned validation_flags; - struct pipe_fence_handle *fence; - struct list_head head; - struct fenced_buffer_list *list; + struct pipe_fence_handle *fence; }; +static INLINE struct fenced_manager * +fenced_manager(struct pb_manager *mgr) +{ + assert(mgr); + return (struct fenced_manager *)mgr; +} + + static INLINE struct fenced_buffer * fenced_buffer(struct pb_buffer *buf) { @@ -110,221 +165,568 @@ fenced_buffer(struct pb_buffer *buf) } -static INLINE void -_fenced_buffer_add(struct fenced_buffer *fenced_buf) -{ - struct fenced_buffer_list *fenced_list = fenced_buf->list; +static void +fenced_buffer_destroy_cpu_storage_locked(struct fenced_buffer *fenced_buf); - assert(pipe_is_referenced(&fenced_buf->base.base.reference)); - assert(fenced_buf->flags & PIPE_BUFFER_USAGE_GPU_READ_WRITE); - assert(fenced_buf->fence); +static enum pipe_error +fenced_buffer_create_cpu_storage_locked(struct fenced_manager *fenced_mgr, +struct fenced_buffer *fenced_buf); +static void +fenced_buffer_destroy_gpu_storage_locked(struct fenced_buffer *fenced_buf); + +static enum pipe_error +fenced_buffer_create_gpu_storage_locked(struct fenced_manager *fenced_mgr, +struct fenced_buffer *fenced_buf, +
Mesa (gallium-multiple-constant-buffers): regress: Add fragment shader test for one-dimensional constant buffers.
Module: Mesa Branch: gallium-multiple-constant-buffers Commit: b9c873f9deee135ad7b98f844997f609837d0120 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=b9c873f9deee135ad7b98f844997f609837d0120 Author: Michal Krol Date: Fri Jan 22 09:40:33 2010 +0100 regress: Add fragment shader test for one-dimensional constant buffers. --- .../tests/regress/fragment-shader/frag-cb-1d.sh| 13 + .../regress/fragment-shader/fragment-shader.py | 11 ++- 2 files changed, 19 insertions(+), 5 deletions(-) diff --git a/src/gallium/state_trackers/python/tests/regress/fragment-shader/frag-cb-1d.sh b/src/gallium/state_trackers/python/tests/regress/fragment-shader/frag-cb-1d.sh new file mode 100644 index 000..85fb9ea --- /dev/null +++ b/src/gallium/state_trackers/python/tests/regress/fragment-shader/frag-cb-1d.sh @@ -0,0 +1,13 @@ +FRAG + +DCL IN[0], COLOR, LINEAR +DCL OUT[0], COLOR +DCL CONST[1] +DCL CONST[3] +DCL TEMP[0..1] + +ADD TEMP[0], IN[0], CONST[1] +RCP TEMP[1], CONST[3]. +MUL OUT[0], TEMP[0], TEMP[1] + +END diff --git a/src/gallium/state_trackers/python/tests/regress/fragment-shader/fragment-shader.py b/src/gallium/state_trackers/python/tests/regress/fragment-shader/fragment-shader.py index 6a0c1f8..9e668d2 100644 --- a/src/gallium/state_trackers/python/tests/regress/fragment-shader/fragment-shader.py +++ b/src/gallium/state_trackers/python/tests/regress/fragment-shader/fragment-shader.py @@ -147,17 +147,17 @@ def test(dev, name): fs = Shader(file('frag-' + name + '.sh', 'rt').read()) ctx.set_fragment_shader(fs) -constbuf0 = dev.buffer_create(16, +constbuf0 = dev.buffer_create(64, (PIPE_BUFFER_USAGE_CONSTANT | PIPE_BUFFER_USAGE_GPU_READ | PIPE_BUFFER_USAGE_CPU_WRITE), 4 * 4 * 4) cbdata = '' -cbdata += struct.pack('4f', 0.5, 0.5, 0.5, 0.5) -cbdata += struct.pack('4f', 0.5, 0.5, 0.5, 0.5) -cbdata += struct.pack('4f', 0.5, 0.5, 0.5, 0.5) -cbdata += struct.pack('4f', 0.5, 0.5, 0.5, 0.5) +cbdata += struct.pack('4f', 0.4, 0.0, 0.0, 1.0) +cbdata += struct.pack('4f', 1.0, 1.0, 1.0, 1.0) +cbdata += struct.pack('4f', 2.0, 2.0, 2.0, 2.0) +cbdata += struct.pack('4f', 4.0, 8.0, 16.0, 32.0) constbuf0.write(cbdata, 0) @@ -221,6 +221,7 @@ def main(): tests = [ 'abs', 'add', +'cb-1d', 'cb-2d', 'dp3', 'dp4', ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (gallium-multiple-constant-buffers): gallium: Enable multiple constant buffers for vertex and geometry shaders.
Module: Mesa Branch: gallium-multiple-constant-buffers Commit: a6201ae55f1e8bef6ad173d25a9bef0447d3b309 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=a6201ae55f1e8bef6ad173d25a9bef0447d3b309 Author: Michal Krol Date: Mon Jan 25 12:36:50 2010 +0100 gallium: Enable multiple constant buffers for vertex and geometry shaders. --- src/gallium/auxiliary/draw/draw_context.c | 11 +++-- src/gallium/auxiliary/draw/draw_context.h | 10 +++-- src/gallium/auxiliary/draw/draw_gs.c | 14 -- src/gallium/auxiliary/draw/draw_gs.h |2 +- src/gallium/auxiliary/draw/draw_private.h | 28 +++- .../auxiliary/draw/draw_pt_fetch_shade_pipeline.c | 12 +++--- src/gallium/auxiliary/draw/draw_vs.c | 40 ++--- src/gallium/auxiliary/draw/draw_vs.h |8 ++- src/gallium/auxiliary/draw/draw_vs_aos.c | 10 +++- src/gallium/auxiliary/draw/draw_vs_aos.h |2 +- src/gallium/auxiliary/draw/draw_vs_aos_machine.c | 14 -- src/gallium/auxiliary/draw/draw_vs_exec.c |6 ++- src/gallium/auxiliary/draw/draw_vs_llvm.c |5 +- src/gallium/auxiliary/draw/draw_vs_ppc.c |4 +- src/gallium/auxiliary/draw/draw_vs_sse.c |4 +- src/gallium/auxiliary/draw/draw_vs_varient.c |4 +- src/gallium/drivers/cell/ppu/cell_draw_arrays.c|2 +- src/gallium/drivers/i915/i915_context.c|2 +- src/gallium/drivers/llvmpipe/lp_state_fs.c |2 +- src/gallium/drivers/nv04/nv04_vbo.c|2 +- src/gallium/drivers/nv10/nv10_vbo.c|1 + src/gallium/drivers/nv20/nv20_vbo.c|2 +- src/gallium/drivers/nv40/nv40_draw.c |2 +- src/gallium/drivers/r300/r300_render.c |2 + src/gallium/drivers/softpipe/sp_draw_arrays.c | 48 src/gallium/drivers/svga/svga_swtnl_draw.c |2 +- src/mesa/state_tracker/st_draw_feedback.c |2 +- 27 files changed, 146 insertions(+), 95 deletions(-) diff --git a/src/gallium/auxiliary/draw/draw_context.c b/src/gallium/auxiliary/draw/draw_context.c index e90dfc5..0382999 100644 --- a/src/gallium/auxiliary/draw/draw_context.c +++ b/src/gallium/auxiliary/draw/draw_context.c @@ -237,17 +237,20 @@ draw_set_mapped_vertex_buffer(struct draw_context *draw, void draw_set_mapped_constant_buffer(struct draw_context *draw, unsigned shader_type, +unsigned slot, const void *buffer, unsigned size ) { debug_assert(shader_type == PIPE_SHADER_VERTEX || shader_type == PIPE_SHADER_GEOMETRY); + debug_assert(slot < PIPE_MAX_CONSTANT); + if (shader_type == PIPE_SHADER_VERTEX) { - draw->pt.user.vs_constants = buffer; - draw_vs_set_constants( draw, (const float (*)[4])buffer, size ); + draw->pt.user.vs_constants[slot] = buffer; + draw_vs_set_constants(draw, slot, buffer, size); } else if (shader_type == PIPE_SHADER_GEOMETRY) { - draw->pt.user.gs_constants = buffer; - draw_gs_set_constants( draw, (const float (*)[4])buffer, size ); + draw->pt.user.gs_constants[slot] = buffer; + draw_gs_set_constants(draw, slot, buffer, size); } } diff --git a/src/gallium/auxiliary/draw/draw_context.h b/src/gallium/auxiliary/draw/draw_context.h index 8a64c06..acd81b9 100644 --- a/src/gallium/auxiliary/draw/draw_context.h +++ b/src/gallium/auxiliary/draw/draw_context.h @@ -151,10 +151,12 @@ void draw_set_mapped_element_buffer( struct draw_context *draw, void draw_set_mapped_vertex_buffer(struct draw_context *draw, unsigned attr, const void *buffer); -void draw_set_mapped_constant_buffer(struct draw_context *draw, - unsigned shader_type, - const void *buffer, - unsigned size ); +void +draw_set_mapped_constant_buffer(struct draw_context *draw, +unsigned shader_type, +unsigned slot, +const void *buffer, +unsigned size); /*** diff --git a/src/gallium/auxiliary/draw/draw_gs.c b/src/gallium/auxiliary/draw/draw_gs.c index c3cc365..96be5db 100644 --- a/src/gallium/auxiliary/draw/draw_gs.c +++ b/src/gallium/auxiliary/draw/draw_gs.c @@ -69,9 +69,11 @@ void draw_gs_destroy( struct draw_context *draw ) tgsi_exec_machine_destroy(draw->gs.machine); } -void draw_gs_set_constants( struct draw_context *draw, -const float (*constants)[4], -unsigned size ) +void +draw_gs_set_constants(struct draw_context
Mesa (gallium-multiple-constant-buffers): gallium: Rename PIPE_MAX_CONSTANT to PIPE_MAX_CONSTANT_BUFFERS.
Module: Mesa Branch: gallium-multiple-constant-buffers Commit: 5340c8307601d701b2835d1d5de5e2395802091b URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=5340c8307601d701b2835d1d5de5e2395802091b Author: Michal Krol Date: Mon Jan 25 13:29:33 2010 +0100 gallium: Rename PIPE_MAX_CONSTANT to PIPE_MAX_CONSTANT_BUFFERS. --- src/gallium/auxiliary/draw/draw_context.c |2 +- src/gallium/auxiliary/draw/draw_gs.c |4 ++-- src/gallium/auxiliary/draw/draw_gs.h |2 +- src/gallium/auxiliary/draw/draw_private.h | 10 +- src/gallium/auxiliary/draw/draw_vs.c |2 +- src/gallium/auxiliary/draw/draw_vs.h |2 +- src/gallium/auxiliary/draw/draw_vs_aos.c |4 ++-- src/gallium/auxiliary/draw/draw_vs_aos.h |2 +- src/gallium/auxiliary/draw/draw_vs_exec.c |4 ++-- src/gallium/auxiliary/draw/draw_vs_llvm.c |2 +- src/gallium/auxiliary/draw/draw_vs_ppc.c |2 +- src/gallium/auxiliary/draw/draw_vs_sse.c |2 +- src/gallium/auxiliary/tgsi/tgsi_exec.c|2 +- src/gallium/auxiliary/tgsi/tgsi_exec.h|2 +- src/gallium/auxiliary/tgsi/tgsi_ureg.c|6 +++--- src/gallium/drivers/softpipe/sp_context.c |2 +- src/gallium/drivers/softpipe/sp_context.h |4 ++-- src/gallium/drivers/softpipe/sp_draw_arrays.c |8 src/gallium/drivers/softpipe/sp_quad_fs.c |2 +- src/gallium/drivers/softpipe/sp_state_fs.c|2 +- src/gallium/include/pipe/p_state.h|2 +- 21 files changed, 34 insertions(+), 34 deletions(-) diff --git a/src/gallium/auxiliary/draw/draw_context.c b/src/gallium/auxiliary/draw/draw_context.c index 0382999..3372e1d 100644 --- a/src/gallium/auxiliary/draw/draw_context.c +++ b/src/gallium/auxiliary/draw/draw_context.c @@ -243,7 +243,7 @@ draw_set_mapped_constant_buffer(struct draw_context *draw, { debug_assert(shader_type == PIPE_SHADER_VERTEX || shader_type == PIPE_SHADER_GEOMETRY); - debug_assert(slot < PIPE_MAX_CONSTANT); + debug_assert(slot < PIPE_MAX_CONSTANT_BUFFERS); if (shader_type == PIPE_SHADER_VERTEX) { draw->pt.user.vs_constants[slot] = buffer; diff --git a/src/gallium/auxiliary/draw/draw_gs.c b/src/gallium/auxiliary/draw/draw_gs.c index 96be5db..7069aa6 100644 --- a/src/gallium/auxiliary/draw/draw_gs.c +++ b/src/gallium/auxiliary/draw/draw_gs.c @@ -293,7 +293,7 @@ draw_geometry_fetch_outputs(struct draw_geometry_shader *shader, void draw_geometry_shader_run(struct draw_geometry_shader *shader, const float (*input)[4], float (*output)[4], - const void *constants[PIPE_MAX_CONSTANT], + const void *constants[PIPE_MAX_CONSTANT_BUFFERS], unsigned count, unsigned input_stride, unsigned vertex_size) @@ -304,7 +304,7 @@ void draw_geometry_shader_run(struct draw_geometry_shader *shader, unsigned num_primitives = count/num_vertices; unsigned inputs_from_vs = 0; - for (i = 0; i < PIPE_MAX_CONSTANT; i++) { + for (i = 0; i < PIPE_MAX_CONSTANT_BUFFERS; i++) { machine->Consts[i] = constants[i]; } diff --git a/src/gallium/auxiliary/draw/draw_gs.h b/src/gallium/auxiliary/draw/draw_gs.h index e055c8a..d8eb210 100644 --- a/src/gallium/auxiliary/draw/draw_gs.h +++ b/src/gallium/auxiliary/draw/draw_gs.h @@ -62,7 +62,7 @@ struct draw_geometry_shader { void draw_geometry_shader_run(struct draw_geometry_shader *shader, const float (*input)[4], float (*output)[4], - const void *constants[PIPE_MAX_CONSTANT], + const void *constants[PIPE_MAX_CONSTANT_BUFFERS], unsigned count, unsigned input_stride, unsigned output_stride); diff --git a/src/gallium/auxiliary/draw/draw_private.h b/src/gallium/auxiliary/draw/draw_private.h index ecb17cb..6a7190e 100644 --- a/src/gallium/auxiliary/draw/draw_private.h +++ b/src/gallium/auxiliary/draw/draw_private.h @@ -153,8 +153,8 @@ struct draw_context const void *vbuffer[PIPE_MAX_ATTRIBS]; /** constant buffer (for vertex/geometry shader) */ - const void *vs_constants[PIPE_MAX_CONSTANT]; - const void *gs_constants[PIPE_MAX_CONSTANT]; + const void *vs_constants[PIPE_MAX_CONSTANT_BUFFERS]; + const void *gs_constants[PIPE_MAX_CONSTANT_BUFFERS]; } user; boolean test_fse; /* enable FSE even though its not correct (eg for softpipe) */ @@ -202,10 +202,10 @@ struct draw_context struct aos_machine *aos_machine; - const void *aligned_constants[PIPE_MAX_CONSTANT]; + const void *aligned_constants[PIPE_MAX_CONSTANT_BU
Mesa (gallium-multiple-constant-buffers): regress: Add vertex shaders tests for constant buffers.
Module: Mesa Branch: gallium-multiple-constant-buffers Commit: 7bd5290d2068ccd9748defd9f0fc1930fe728398 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=7bd5290d2068ccd9748defd9f0fc1930fe728398 Author: Michal Krol Date: Mon Jan 25 12:42:17 2010 +0100 regress: Add vertex shaders tests for constant buffers. --- .../tests/regress/vertex-shader/vert-cb-1d.sh | 16 .../tests/regress/vertex-shader/vert-cb-2d.sh | 12 ++ .../tests/regress/vertex-shader/vertex-shader.py | 40 3 files changed, 68 insertions(+), 0 deletions(-) diff --git a/src/gallium/state_trackers/python/tests/regress/vertex-shader/vert-cb-1d.sh b/src/gallium/state_trackers/python/tests/regress/vertex-shader/vert-cb-1d.sh new file mode 100644 index 000..b41fe5d --- /dev/null +++ b/src/gallium/state_trackers/python/tests/regress/vertex-shader/vert-cb-1d.sh @@ -0,0 +1,16 @@ +VERT + +DCL IN[0], POSITION +DCL IN[1], COLOR +DCL OUT[0], POSITION +DCL OUT[1], COLOR +DCL CONST[1] +DCL CONST[3] +DCL TEMP[0..1] + +MOV OUT[0], IN[0] +ADD TEMP[0], IN[1], CONST[1] +RCP TEMP[1], CONST[3]. +MUL OUT[1], TEMP[0], TEMP[1] + +END diff --git a/src/gallium/state_trackers/python/tests/regress/vertex-shader/vert-cb-2d.sh b/src/gallium/state_trackers/python/tests/regress/vertex-shader/vert-cb-2d.sh new file mode 100644 index 000..45f5e6b --- /dev/null +++ b/src/gallium/state_trackers/python/tests/regress/vertex-shader/vert-cb-2d.sh @@ -0,0 +1,12 @@ +VERT + +DCL IN[0], POSITION +DCL IN[1], COLOR +DCL OUT[0], POSITION +DCL OUT[1], COLOR +DCL CONST[1][1..2] + +MOV OUT[0], IN[0] +MAD OUT[1], IN[1], CONST[1][2], CONST[1][1] + +END diff --git a/src/gallium/state_trackers/python/tests/regress/vertex-shader/vertex-shader.py b/src/gallium/state_trackers/python/tests/regress/vertex-shader/vertex-shader.py index 01bf5a3..9650377 100644 --- a/src/gallium/state_trackers/python/tests/regress/vertex-shader/vertex-shader.py +++ b/src/gallium/state_trackers/python/tests/regress/vertex-shader/vertex-shader.py @@ -27,6 +27,8 @@ ## +import struct + from gallium import * def make_image(surface): @@ -143,6 +145,42 @@ def test(dev, name): ''') ctx.set_fragment_shader(fs) +constbuf0 = dev.buffer_create(64, + (PIPE_BUFFER_USAGE_CONSTANT | + PIPE_BUFFER_USAGE_GPU_READ | + PIPE_BUFFER_USAGE_CPU_WRITE), + 4 * 4 * 4) + +cbdata = '' +cbdata += struct.pack('4f', 0.4, 0.0, 0.0, 1.0) +cbdata += struct.pack('4f', 1.0, 1.0, 1.0, 1.0) +cbdata += struct.pack('4f', 2.0, 2.0, 2.0, 2.0) +cbdata += struct.pack('4f', 4.0, 8.0, 16.0, 32.0) + +constbuf0.write(cbdata, 0) + +ctx.set_constant_buffer(PIPE_SHADER_VERTEX, +0, +constbuf0) + +constbuf1 = dev.buffer_create(64, + (PIPE_BUFFER_USAGE_CONSTANT | + PIPE_BUFFER_USAGE_GPU_READ | + PIPE_BUFFER_USAGE_CPU_WRITE), + 4 * 4 * 4) + +cbdata = '' +cbdata += struct.pack('4f', 0.1, 0.1, 0.1, 0.1) +cbdata += struct.pack('4f', 0.25, 0.25, 0.25, 0.25) +cbdata += struct.pack('4f', 0.5, 0.5, 0.5, 0.5) +cbdata += struct.pack('4f', 0.75, 0.75, 0.75, 0.75) + +constbuf1.write(cbdata, 0) + +ctx.set_constant_buffer(PIPE_SHADER_VERTEX, +1, +constbuf1) + xy = [ 0.0, 0.8, -0.2, 0.4, @@ -213,6 +251,8 @@ def main(): 'add', 'arl', 'arr', +'cb-1d', +'cb-2d', 'dp3', 'dp4', 'dst', ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (gallium-multiple-constant-buffers): gallium: Add CAPs for constant buffers.
Module: Mesa Branch: gallium-multiple-constant-buffers Commit: dfc5cee6299ffa6eb4e92fb0461bb3dbb1664abe URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=dfc5cee6299ffa6eb4e92fb0461bb3dbb1664abe Author: Michal Krol Date: Mon Jan 25 13:35:35 2010 +0100 gallium: Add CAPs for constant buffers. --- src/gallium/include/pipe/p_defines.h |2 ++ 1 files changed, 2 insertions(+), 0 deletions(-) diff --git a/src/gallium/include/pipe/p_defines.h b/src/gallium/include/pipe/p_defines.h index 35f3830..353d79a 100644 --- a/src/gallium/include/pipe/p_defines.h +++ b/src/gallium/include/pipe/p_defines.h @@ -405,6 +405,8 @@ enum pipe_transfer_usage { #define PIPE_CAP_MAX_PREDICATE_REGISTERS 30 #define PIPE_CAP_MAX_COMBINED_SAMPLERS 31 /*< Maximum texture image units accessible from vertex and fragment shaders combined */ +#define PIPE_CAP_MAX_CONST_BUFFERS 32 +#define PIPE_CAP_MAX_CONST_BUFFER_SIZE 33 /*< In bytes */ /** ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (gallium-multiple-constant-buffers): docs: Implement constant buffer CAPs.
Module: Mesa Branch: gallium-multiple-constant-buffers Commit: 580a62c1e0005403569b8b9e67356a8e957e35cc URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=580a62c1e0005403569b8b9e67356a8e957e35cc Author: Michal Krol Date: Mon Jan 25 14:55:24 2010 +0100 docs: Implement constant buffer CAPs. --- src/gallium/docs/source/screen.rst | 24 +++- 1 files changed, 23 insertions(+), 1 deletions(-) diff --git a/src/gallium/docs/source/screen.rst b/src/gallium/docs/source/screen.rst index 72bb75a..f0f0cb4 100644 --- a/src/gallium/docs/source/screen.rst +++ b/src/gallium/docs/source/screen.rst @@ -43,7 +43,29 @@ Returns the screen vendor. get_param ^ -Get an integer/boolean screen parameter. +Get an integer/boolean screen parameter. Valid parameter names include. + +* ``PIPE_CAP_MAX_CONST_BUFFERS``: Maximum number of constant buffers that + can be bound to any shader stage using ``set_constant_buffer``. + + If 0 is returned, the driver is not aware of multiple constant buffers, + supports binding of only one constant buffer, and does not support + two-dimensional CONST register file access in TGSI shaders. + + If a value greater than 0 is returned, the driver can have multiple + constant buffers bound to shader stages. The CONST register file can + be accessed with two-dimensional indices, like in the example below. + +DCL CONST[0][0..7] # declare first 8 vectors of constbuf 0 +DCL CONST[3][0] # declare first vector of constbuf 3 +MOV OUT[0], CONST[0][3] # copy vector 3 of constbuf 0 + + For backwards compatibility, one-dimensional access to CONST register + file is still supported. In that case, the constbuf index is assumed + to be 0. + +* ``PIPE_CAP_MAX_CONST_BUFFER_SIZE``: Maximum byte size of a single constant + buffer. get_paramf ^^ ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (gallium-multiple-constant-buffers): softpipe: Report some sane values for constant buffer CAP queries.
Module: Mesa Branch: gallium-multiple-constant-buffers Commit: 4e014d9c11d11ad87e10f8847253229566bed4d7 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=4e014d9c11d11ad87e10f8847253229566bed4d7 Author: Michal Krol Date: Mon Jan 25 14:31:32 2010 +0100 softpipe: Report some sane values for constant buffer CAP queries. --- src/gallium/drivers/softpipe/sp_screen.c |4 1 files changed, 4 insertions(+), 0 deletions(-) diff --git a/src/gallium/drivers/softpipe/sp_screen.c b/src/gallium/drivers/softpipe/sp_screen.c index bd3532d..69f40dc 100644 --- a/src/gallium/drivers/softpipe/sp_screen.c +++ b/src/gallium/drivers/softpipe/sp_screen.c @@ -91,6 +91,10 @@ softpipe_get_param(struct pipe_screen *screen, int param) return 1; case PIPE_CAP_BLEND_EQUATION_SEPARATE: return 1; + case PIPE_CAP_MAX_CONST_BUFFERS: + return PIPE_MAX_CONSTANT_BUFFERS; + case PIPE_CAP_MAX_CONST_BUFFER_SIZE: + return 4096 * 4 * sizeof(float); default: return 0; } ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (master): winsys/drm: Correctly install EGL drivers.
Module: Mesa Branch: master Commit: 2204447de320afe201a9369f57658cae0a11a440 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=2204447de320afe201a9369f57658cae0a11a440 Author: Chia-I Wu Date: Mon Jan 25 22:29:51 2010 +0800 winsys/drm: Correctly install EGL drivers. Remove extraneous quotes that prevent some drivers to be installed when there are more than one display in EGL_DISPLAYS. --- src/gallium/winsys/drm/Makefile.egl |2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/src/gallium/winsys/drm/Makefile.egl b/src/gallium/winsys/drm/Makefile.egl index d79ceee..b1f2038 100644 --- a/src/gallium/winsys/drm/Makefile.egl +++ b/src/gallium/winsys/drm/Makefile.egl @@ -55,7 +55,7 @@ clean: install: $(EGL_DISPLAY_LIBS) $(INSTALL) -d $(DESTDIR)$(EGL_DRIVER_INSTALL_DIR) - for lib in "$(EGL_DISPLAY_LIBS)"; do \ + for lib in $(EGL_DISPLAY_LIBS); do \ $(MINSTALL) -m 755 "$$lib" $(DESTDIR)$(EGL_DRIVER_INSTALL_DIR); \ done ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (master): Fix compressed texture loads for non-minimal pitches again
Module: Mesa Branch: master Commit: 9328f3a670993167d7fb9a590f9e712467e77c7c URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=9328f3a670993167d7fb9a590f9e712467e77c7c Author: Luca Barbieri Date: Tue Jan 19 17:39:27 2010 -0800 Fix compressed texture loads for non-minimal pitches again My commit eea6a7639f767b1d30b6ef1f91a9c49e3f3b78f0 does a memcpy of height lines, but that's wrong because the texture has a block layout and we must thus use the number of vertical blocks instead of the height. Signed-off-by: Brian Paul --- src/mesa/state_tracker/st_cb_texture.c |6 -- 1 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/mesa/state_tracker/st_cb_texture.c b/src/mesa/state_tracker/st_cb_texture.c index b94bfc8..cee2452 100644 --- a/src/mesa/state_tracker/st_cb_texture.c +++ b/src/mesa/state_tracker/st_cb_texture.c @@ -686,9 +686,11 @@ st_TexImage(GLcontext * ctx, { char *dst = texImage->Data; const char *src = pixels; - int i; + GLuint i, bw, bh, lines; + _mesa_get_format_block_size(texImage->TexFormat, &bw, &bh); + lines = (height + bh - 1) / bh; - for(i = 0; i < height; ++i) + for(i = 0; i < lines; ++i) { memcpy(dst, src, srcImageStride); dst += dstRowStride; ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (mesa_7_7_branch): vega: fix incorrect samplers, textures indexes in blend_bind_samplers()
Module: Mesa Branch: mesa_7_7_branch Commit: 0d051af6127d206d165a1034ca0795ce8fdcd389 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=0d051af6127d206d165a1034ca0795ce8fdcd389 Author: Igor Oliveira Date: Mon Jan 25 09:53:53 2010 -0700 vega: fix incorrect samplers, textures indexes in blend_bind_samplers() Fixes fd.o bug 25863. Signed-off-by: Brian Paul --- src/gallium/state_trackers/vega/shader.c |4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/gallium/state_trackers/vega/shader.c b/src/gallium/state_trackers/vega/shader.c index d9074a3..91909da 100644 --- a/src/gallium/state_trackers/vega/shader.c +++ b/src/gallium/state_trackers/vega/shader.c @@ -135,8 +135,8 @@ static VGint blend_bind_samplers(struct vg_context *ctx, textures[2] = stfb->blend_texture; if (!samplers[0] || !textures[0]) { - samplers[1] = samplers[2]; - textures[1] = textures[2]; + samplers[0] = samplers[2]; + textures[0] = textures[2]; } if (!samplers[1] || !textures[1]) { samplers[1] = samplers[0]; ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (perrtblend): 21 new commits
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=df4395198ce433251c8bd2d497543c7b389e5aca Author: Roland Scheidegger Date: Mon Jan 25 20:20:52 2010 +0100 softpipe: enable new blend functionality works with tests/drawbuffers2 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=5fae36147e1067ac8b1eb5bcade2f9b1dbf29aa4 Author: Roland Scheidegger Date: Mon Jan 25 19:27:05 2010 +0100 st/mesa: handle EXT_draw_buffers2 per rendertarget blend enables / colormasks uses the new gallium per-rt blend functionality URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=0d3a6a505d537b879f31be0ed14fa8577717efaf Author: Roland Scheidegger Date: Mon Jan 25 16:52:14 2010 +0100 vega: don't enable blending if not necessary In some places blending was enabled even though it wasn't necessary. Also remove a (bogus) reenabling of color writes, which wasn't really used. URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=dbc0e24ab866ce8bdd974b52e050dd022620b146 Author: Roland Scheidegger Date: Mon Jan 25 16:43:33 2010 +0100 xorg: do not enable unnecessary blending for xv URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=13b74b585a013f0f089ea14c9512e3d709bdca67 Author: Roland Scheidegger Date: Mon Jan 25 16:41:57 2010 +0100 trace: adapt to blend changes URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=6893948d482ab69a41290d1b0172834197ee48f2 Author: Roland Scheidegger Date: Mon Jan 25 16:39:39 2010 +0100 svga: adapt to blend changes URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=4e6bfa6de1940f1da018aace444ae7ca16792d28 Author: Roland Scheidegger Date: Mon Jan 25 16:39:16 2010 +0100 softpipe: adapt to blend changes URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=e908abf1740dce1a3b391ce5bcfda4f2a0b480de Author: Roland Scheidegger Date: Mon Jan 25 16:38:32 2010 +0100 nouveau: adapt drviers to blend changes URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=d241964e47ac5576e754d6e6ae19fece8bf8752c Author: Roland Scheidegger Date: Mon Jan 25 16:37:51 2010 +0100 r300g: adapt to blend changes URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=4e0c825a799b9982ad62125df1aa876b3b0c110d Author: Roland Scheidegger Date: Mon Jan 25 16:37:27 2010 +0100 i965g: adapt to blend changes URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=bc160fc9b293f155d5ed48912dc09c111b97ec74 Author: Roland Scheidegger Date: Mon Jan 25 16:37:09 2010 +0100 i915g: adapt to blend changes URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=88388b99fbde4652d39f4876a2fc0235de415a3f Author: Roland Scheidegger Date: Mon Jan 25 16:36:37 2010 +0100 cell: adapt to blend changes URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=99e28d4ee3ce995845d9290b735b1fbe1b96886d Author: Roland Scheidegger Date: Mon Jan 25 16:35:56 2010 +0100 llvmpipe: adapt to blend changes URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=3770769f21138ba722a38c1400b501fdcedea17d Author: Roland Scheidegger Date: Mon Jan 25 16:34:29 2010 +0100 st/python: adapt to blend changes URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=feefa7a510058f57a81e5e928cd2fcb63506624f Author: Roland Scheidegger Date: Mon Jan 25 16:33:09 2010 +0100 vega: adapt to blend changes URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=92676b9fe6356a8974830c47c0191d1ca57a0741 Author: Roland Scheidegger Date: Mon Jan 25 16:32:18 2010 +0100 xorg: adapt to blend changes URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=cbb8d35a3ae999f0192dfdca35f7cbc1d494fabb Author: Roland Scheidegger Date: Mon Jan 25 16:31:21 2010 +0100 gallium: fix cast for size calc of pipe_blend_state URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=629bb3fa32f6ca1f8cf43222f4b4c399c91b3b6a Author: Roland Scheidegger Date: Thu Jan 21 20:48:13 2010 +0100 docs: enhance blend documentation URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=c6c9d3b0914e2c3d8585123055c97d8ac3452fe5 Author: Roland Scheidegger Date: Thu Jan 21 20:22:24 2010 +0100 docs: clean up sampler description URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=eba1e2a44718bea398e49d496a78ee002c9922b8 Author: Roland Scheidegger Date: Thu Jan 21 19:56:29 2010 +0100 gallium: adapt util code to blend changes URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=41667a9a3e2c809d7d7e65f81782df8c89790bc6 Author: Roland Scheidegger Date: Thu Jan 21 19:45:43 2010 +0100 gallium: new PIPE_CAP bits for the independent blend functionality ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (master): Revert "r300g, radeong: finish and enable the immediate mode"
Module: Mesa Branch: master Commit: 72778a9d254f6c9c63d86413936ee7f3e5a6e56e URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=72778a9d254f6c9c63d86413936ee7f3e5a6e56e Author: Corbin Simpson Date: Mon Jan 25 10:52:19 2010 -0800 Revert "r300g,radeong: finish and enable the immediate mode" This reverts commit 112239e9a66a155d36fe2ad0ab130e6f26eff298. --- src/gallium/drivers/r300/r300_emit.c | 22 +++ src/gallium/drivers/r300/r300_render.c | 141 --- src/gallium/drivers/r300/r300_state.c | 22 --- src/gallium/winsys/drm/radeon/core/radeon_buffer.c | 83 ++-- src/gallium/winsys/drm/radeon/core/radeon_buffer.h |2 - src/gallium/winsys/drm/radeon/core/radeon_drm.h|2 +- src/gallium/winsys/drm/radeon/core/radeon_r300.c |8 +- src/gallium/winsys/drm/radeon/core/radeon_winsys.h |6 - 8 files changed, 67 insertions(+), 219 deletions(-) diff --git a/src/gallium/drivers/r300/r300_emit.c b/src/gallium/drivers/r300/r300_emit.c index badbf37..36d2c64 100644 --- a/src/gallium/drivers/r300/r300_emit.c +++ b/src/gallium/drivers/r300/r300_emit.c @@ -772,6 +772,22 @@ void r300_emit_texture(struct r300_context* r300, END_CS; } +static boolean r300_validate_aos(struct r300_context *r300) +{ +struct pipe_vertex_buffer *vbuf = r300->vertex_buffer; +struct pipe_vertex_element *velem = r300->vertex_element; +int i; + +/* Check if formats and strides are aligned to the size of DWORD. */ +for (i = 0; i < r300->vertex_element_count; i++) { +if (vbuf[velem[i].vertex_buffer_index].stride % 4 != 0 || +util_format_get_blocksize(velem[i].src_format) % 4 != 0) { +return FALSE; +} +} +return TRUE; +} + void r300_emit_aos(struct r300_context* r300, unsigned offset) { struct pipe_vertex_buffer *vb1, *vb2, *vbuf = r300->vertex_buffer; @@ -781,6 +797,12 @@ void r300_emit_aos(struct r300_context* r300, unsigned offset) unsigned packet_size = (aos_count * 3 + 1) / 2; CS_LOCALS(r300); +/* XXX Move this checking to a more approriate place. */ +if (!r300_validate_aos(r300)) { +/* XXX We should fallback using Draw. */ +assert(0); +} + BEGIN_CS(2 + packet_size + aos_count * 2); OUT_CS_PKT3(R300_PACKET3_3D_LOAD_VBPNTR, packet_size); OUT_CS(aos_count); diff --git a/src/gallium/drivers/r300/r300_render.c b/src/gallium/drivers/r300/r300_render.c index 7f095bf..677031e 100644 --- a/src/gallium/drivers/r300/r300_render.c +++ b/src/gallium/drivers/r300/r300_render.c @@ -28,7 +28,6 @@ #include "pipe/p_inlines.h" -#include "util/u_format.h" #include "util/u_memory.h" #include "util/u_prim.h" @@ -115,53 +114,20 @@ static uint32_t r300_provoking_vertex_fixes(struct r300_context *r300, return color_control; } - -static void r300_emit_draw_arrays_immediate(struct r300_context *r300, -unsigned mode, -unsigned start, -unsigned count) +static void r300_emit_draw_immediate(struct r300_context *r300, + unsigned mode, + unsigned start, + unsigned count) { -struct pipe_vertex_element* velem; -struct pipe_vertex_buffer* vbuf; -unsigned vertex_element_count = r300->vertex_element_count; -unsigned i, v, vbi, dw, elem_offset; - -/* Size of the vertex, in dwords. */ -unsigned vertex_size = 0; - -/* Offsets of the attribute, in dwords, from the start of the vertex. */ -unsigned offset[PIPE_MAX_ATTRIBS]; - -/* Size of the vertex element, in dwords. */ -unsigned size[PIPE_MAX_ATTRIBS]; - -/* Stride to the same attrib in the next vertex in the vertex buffer, - * in dwords. */ -unsigned stride[PIPE_MAX_ATTRIBS]; - -/* Mapped vertex buffers. */ -uint32_t* map[PIPE_MAX_ATTRIBS] = {0}; - +struct pipe_buffer* vbo = r300->vertex_buffer[0].buffer; +unsigned vertex_size = r300->vertex_buffer[0].stride / sizeof(float); +unsigned i; +uint32_t* map; CS_LOCALS(r300); -/* Calculate the vertex size, offsets, strides etc. and map the buffers. */ -for (i = 0; i < vertex_element_count; i++) { -velem = &r300->vertex_element[i]; -offset[i] = velem->src_offset >> 2; -size[i] = util_format_get_blocksize(velem->src_format) >> 2; -vertex_size += size[i]; -vbi = velem->vertex_buffer_index; - -/* Map the buffer. */ -if (!map[vbi]) { -vbuf = &r300->vertex_buffer[vbi]; -map[vbi] = (uint32_t*)pipe_buffer_map(r300->context.screen, - vbuf->buffer, - PIPE_BUFFER_USAGE_CPU_READ); -map[vbi] += vbuf->buffer_offset >> 2; -strid
Mesa (master): radeong: Clean up domain usages.
Module: Mesa Branch: master Commit: 67149051be56825151659eb1672242b624555f7d URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=67149051be56825151659eb1672242b624555f7d Author: Corbin Simpson Date: Mon Jan 25 11:01:16 2010 -0800 radeong: Clean up domain usages. Split from Marek's immd-mode patch. --- src/gallium/winsys/drm/radeon/core/radeon_buffer.c | 29 --- 1 files changed, 18 insertions(+), 11 deletions(-) diff --git a/src/gallium/winsys/drm/radeon/core/radeon_buffer.c b/src/gallium/winsys/drm/radeon/core/radeon_buffer.c index 25e1cdc..421fda2 100644 --- a/src/gallium/winsys/drm/radeon/core/radeon_buffer.c +++ b/src/gallium/winsys/drm/radeon/core/radeon_buffer.c @@ -51,6 +51,23 @@ static const char *radeon_get_name(struct pipe_winsys *ws) return "Radeon/GEM+KMS"; } +static uint32_t radeon_domain_from_usage(unsigned usage) +{ +uint32_t domain = 0; + +if (usage & PIPE_BUFFER_USAGE_PIXEL) { +domain |= RADEON_GEM_DOMAIN_VRAM; +} +if (usage & PIPE_BUFFER_USAGE_VERTEX) { +domain |= RADEON_GEM_DOMAIN_GTT; +} +if (usage & PIPE_BUFFER_USAGE_INDEX) { +domain |= RADEON_GEM_DOMAIN_GTT; +} + +return domain; +} + static struct pipe_buffer *radeon_buffer_create(struct pipe_winsys *ws, unsigned alignment, unsigned usage, @@ -79,17 +96,7 @@ static struct pipe_buffer *radeon_buffer_create(struct pipe_winsys *ws, return &radeon_buffer->base; } -domain = 0; - -if (usage & PIPE_BUFFER_USAGE_PIXEL) { -domain |= RADEON_GEM_DOMAIN_VRAM; -} -if (usage & PIPE_BUFFER_USAGE_VERTEX) { -domain |= RADEON_GEM_DOMAIN_GTT; -} -if (usage & PIPE_BUFFER_USAGE_INDEX) { -domain |= RADEON_GEM_DOMAIN_GTT; -} +domain = radeon_domain_from_usage(usage); radeon_buffer->bo = radeon_bo_open(radeon_ws->priv->bom, 0, size, alignment, domain, 0); ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (master): radeong: Make is_r3xx inline to avoid warnings.
Module: Mesa Branch: master Commit: c486bfb463f30bf894d2dae1326973aeb3de1159 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=c486bfb463f30bf894d2dae1326973aeb3de1159 Author: Corbin Simpson Date: Mon Jan 25 11:04:15 2010 -0800 radeong: Make is_r3xx inline to avoid warnings. Split from Marek's immd-mode patch. --- src/gallium/winsys/drm/radeon/core/radeon_drm.h |2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/src/gallium/winsys/drm/radeon/core/radeon_drm.h b/src/gallium/winsys/drm/radeon/core/radeon_drm.h index ddd7983..077388e 100644 --- a/src/gallium/winsys/drm/radeon/core/radeon_drm.h +++ b/src/gallium/winsys/drm/radeon/core/radeon_drm.h @@ -81,7 +81,7 @@ void radeon_destroy_drm_api(struct drm_api* api); /* Guess at whether this chipset should use r300g. * * I believe that this check is valid, but I haven't been exhaustive. */ -static boolean is_r3xx(int pciid) +static INLINE boolean is_r3xx(int pciid) { return (pciid > 0x3150) && (pciid < 0x796f); } ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (master): radeong: Make sure that we' re not emitting relocations for local buffers.
Module: Mesa Branch: master Commit: 1571602153128971ae9ed549d633d67aac65da14 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=1571602153128971ae9ed549d633d67aac65da14 Author: Corbin Simpson Date: Mon Jan 25 11:04:55 2010 -0800 radeong: Make sure that we're not emitting relocations for local buffers. Split from Marek's immd-mode patch. --- src/gallium/winsys/drm/radeon/core/radeon_r300.c |8 ++-- 1 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/gallium/winsys/drm/radeon/core/radeon_r300.c b/src/gallium/winsys/drm/radeon/core/radeon_r300.c index 0253bc2..d759bea 100644 --- a/src/gallium/winsys/drm/radeon/core/radeon_r300.c +++ b/src/gallium/winsys/drm/radeon/core/radeon_r300.c @@ -81,9 +81,13 @@ static void radeon_write_cs_reloc(struct radeon_winsys* winsys, uint32_t flags) { int retval = 0; +struct radeon_pipe_buffer* radeon_buffer = +(struct radeon_pipe_buffer*)pbuffer; -retval = radeon_cs_write_reloc(winsys->priv->cs, -((struct radeon_pipe_buffer*)pbuffer)->bo, rd, wd, flags); +assert(!radeon_buffer->pb); + +retval = radeon_cs_write_reloc(winsys->priv->cs, radeon_buffer->bo, + rd, wd, flags); if (retval) { debug_printf("radeon: Relocation of %p (%d, %d, %d) failed!\n", ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (master): r300g: Finish and enable immediate mode.
Module: Mesa Branch: master Commit: 5fe71949d9e3790ce38ab616aee29079c6b67721 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=5fe71949d9e3790ce38ab616aee29079c6b67721 Author: Corbin Simpson Date: Mon Jan 25 11:27:50 2010 -0800 r300g: Finish and enable immediate mode. Based on Marek's immd-mode patch. --- src/gallium/drivers/r300/r300_emit.c | 22 -- src/gallium/drivers/r300/r300_render.c | 115 +++- src/gallium/drivers/r300/r300_state.c | 22 ++ 3 files changed, 106 insertions(+), 53 deletions(-) diff --git a/src/gallium/drivers/r300/r300_emit.c b/src/gallium/drivers/r300/r300_emit.c index 36d2c64..badbf37 100644 --- a/src/gallium/drivers/r300/r300_emit.c +++ b/src/gallium/drivers/r300/r300_emit.c @@ -772,22 +772,6 @@ void r300_emit_texture(struct r300_context* r300, END_CS; } -static boolean r300_validate_aos(struct r300_context *r300) -{ -struct pipe_vertex_buffer *vbuf = r300->vertex_buffer; -struct pipe_vertex_element *velem = r300->vertex_element; -int i; - -/* Check if formats and strides are aligned to the size of DWORD. */ -for (i = 0; i < r300->vertex_element_count; i++) { -if (vbuf[velem[i].vertex_buffer_index].stride % 4 != 0 || -util_format_get_blocksize(velem[i].src_format) % 4 != 0) { -return FALSE; -} -} -return TRUE; -} - void r300_emit_aos(struct r300_context* r300, unsigned offset) { struct pipe_vertex_buffer *vb1, *vb2, *vbuf = r300->vertex_buffer; @@ -797,12 +781,6 @@ void r300_emit_aos(struct r300_context* r300, unsigned offset) unsigned packet_size = (aos_count * 3 + 1) / 2; CS_LOCALS(r300); -/* XXX Move this checking to a more approriate place. */ -if (!r300_validate_aos(r300)) { -/* XXX We should fallback using Draw. */ -assert(0); -} - BEGIN_CS(2 + packet_size + aos_count * 2); OUT_CS_PKT3(R300_PACKET3_3D_LOAD_VBPNTR, packet_size); OUT_CS(aos_count); diff --git a/src/gallium/drivers/r300/r300_render.c b/src/gallium/drivers/r300/r300_render.c index 677031e..dcd0761 100644 --- a/src/gallium/drivers/r300/r300_render.c +++ b/src/gallium/drivers/r300/r300_render.c @@ -28,6 +28,7 @@ #include "pipe/p_inlines.h" +#include "util/u_format.h" #include "util/u_memory.h" #include "util/u_prim.h" @@ -114,20 +115,58 @@ static uint32_t r300_provoking_vertex_fixes(struct r300_context *r300, return color_control; } -static void r300_emit_draw_immediate(struct r300_context *r300, - unsigned mode, - unsigned start, - unsigned count) +static boolean immd_is_good_idea(struct r300_context *r300, + unsigned count) { -struct pipe_buffer* vbo = r300->vertex_buffer[0].buffer; -unsigned vertex_size = r300->vertex_buffer[0].stride / sizeof(float); -unsigned i; -uint32_t* map; +return count <= 4; +} + +static void r300_emit_draw_arrays_immediate(struct r300_context *r300, +unsigned mode, +unsigned start, +unsigned count) +{ +struct pipe_vertex_element* velem; +struct pipe_vertex_buffer* vbuf; +unsigned vertex_element_count = r300->vertex_element_count; +unsigned i, v, vbi, dw, elem_offset; + +/* Size of the vertex, in dwords. */ +unsigned vertex_size = 0; + +/* Offsets of the attribute, in dwords, from the start of the vertex. */ +unsigned offset[PIPE_MAX_ATTRIBS]; + +/* Size of the vertex element, in dwords. */ +unsigned size[PIPE_MAX_ATTRIBS]; + +/* Stride to the same attrib in the next vertex in the vertex buffer, + * in dwords. */ +unsigned stride[PIPE_MAX_ATTRIBS]; + +/* Mapped vertex buffers. */ +uint32_t* map[PIPE_MAX_ATTRIBS] = {0}; + CS_LOCALS(r300); -map = (uint32_t*)pipe_buffer_map_range(r300->context.screen, vbo, -start * vertex_size, count * vertex_size, -PIPE_BUFFER_USAGE_CPU_READ); +/* Calculate the vertex size, offsets, strides etc. and map the buffers. */ +for (i = 0; i < vertex_element_count; i++) { +velem = &r300->vertex_element[i]; +offset[i] = velem->src_offset / 4; +size[i] = util_format_get_blocksize(velem->src_format) / 4; +vertex_size += size[i]; +vbi = velem->vertex_buffer_index; + +/* Map the buffer. */ +if (!map[vbi]) { +vbuf = &r300->vertex_buffer[vbi]; +map[vbi] = (uint32_t*)pipe_buffer_map(r300->context.screen, + vbuf->buffer, + PIPE_BUFFER_USAGE_CPU_READ); +map[vbi] += vbuf->buffer_offset / 4; +stride[vbi] = vbuf->stride / 4; +} +} BEGIN_CS(10 + count
Mesa (mesa_7_7_branch): st/xorg: Fix crash on resize with libkms
Module: Mesa Branch: mesa_7_7_branch Commit: 6749310d3f60df70ad8f82db986871ab9496793b URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=6749310d3f60df70ad8f82db986871ab9496793b Author: Jakob Bornecrantz Date: Mon Jan 25 20:07:43 2010 +0100 st/xorg: Fix crash on resize with libkms --- src/gallium/state_trackers/xorg/xorg_driver.c | 14 -- 1 files changed, 12 insertions(+), 2 deletions(-) diff --git a/src/gallium/state_trackers/xorg/xorg_driver.c b/src/gallium/state_trackers/xorg/xorg_driver.c index 0ff6c52..e4ad789 100644 --- a/src/gallium/state_trackers/xorg/xorg_driver.c +++ b/src/gallium/state_trackers/xorg/xorg_driver.c @@ -1066,12 +1066,22 @@ drv_bind_front_buffer_kms(ScrnInfoPtr pScrn) goto err_destroy; pScreen->ModifyPixmapHeader(rootPixmap, - pScreen->width, - pScreen->height, + pScrn->virtualX, + pScrn->virtualY, pScreen->rootDepth, pScrn->bitsPerPixel, stride, ptr); + +/* This a hack to work around EnableDisableFBAccess setting the pointer + * the real fix would be to replace pScrn->EnableDisableFBAccess hook + * and set the rootPixmap->devPrivate.ptr to something valid before that. + * + * But in its infinit visdome something uses either this some times before + * that, so our hook doesn't get called before the crash happens. + */ +pScrn->pixmapPrivate.ptr = ptr; + return TRUE; err_destroy: ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (master): r300: rv350+ support FLT16_2/4 vertex formats
Module: Mesa Branch: master Commit: 7e7f8815fbfa21ab2397e673fa19c36603bc7a51 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=7e7f8815fbfa21ab2397e673fa19c36603bc7a51 Author: Alex Deucher Date: Mon Jan 25 16:19:19 2010 -0500 r300: rv350+ support FLT16_2/4 vertex formats --- src/mesa/drivers/dri/r300/r300_context.c |2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/src/mesa/drivers/dri/r300/r300_context.c b/src/mesa/drivers/dri/r300/r300_context.c index 74947a9..2efdae0 100644 --- a/src/mesa/drivers/dri/r300/r300_context.c +++ b/src/mesa/drivers/dri/r300/r300_context.c @@ -451,7 +451,7 @@ static void r300InitGLExtensions(GLcontext *ctx) if (!r300->radeon.radeonScreen->drmSupportsOcclusionQueries) { _mesa_disable_extension(ctx, "GL_ARB_occlusion_query"); } - if (r300->radeon.radeonScreen->chip_family >= CHIP_FAMILY_RV515) + if (r300->radeon.radeonScreen->chip_family >= CHIP_FAMILY_RV350) _mesa_enable_extension(ctx, "GL_ARB_half_float_vertex"); } ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (master): 28 new commits
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=9b22427911ad27efc1f36faee9462c6082d0417c Merge: 7e7f8815fbfa21ab2397e673fa19c36603bc7a51 6749310d3f60df70ad8f82db986871ab9496793b Author: Brian Paul Date: Mon Jan 25 14:46:17 2010 -0700 Merge branch 'mesa_7_7_branch' 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 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=6749310d3f60df70ad8f82db986871ab9496793b Author: Jakob Bornecrantz Date: Mon Jan 25 20:07:43 2010 +0100 st/xorg: Fix crash on resize with libkms URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=0d051af6127d206d165a1034ca0795ce8fdcd389 Author: Igor Oliveira Date: Mon Jan 25 09:53:53 2010 -0700 vega: fix incorrect samplers, textures indexes in blend_bind_samplers() Fixes fd.o bug 25863. Signed-off-by: Brian Paul URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=6877c5de3c3ff39da514a74928ea270138cddff9 Author: Jakob Bornecrantz Date: Mon Jan 25 12:27:47 2010 +0100 vmware/xorg: Do buffer round-robin logic differently URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=0b482c4fbe69a807bb69bf92f37e362f818c664d Author: Jakob Bornecrantz Date: Fri Jan 22 18:28:40 2010 +0100 st/xorg: Improve options and print them to log Set 2D acceleration to off by default Get fallback debugging from the Xorg config Also print if 3D acceleration is enabled URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=a3b783ea294f348bf3424eeb4170dd7f0741519a Author: Jakob Bornecrantz Date: Thu Jan 21 21:32:28 2010 +0100 vmware/xorg: Export pci_probe function for ugly chain-loading URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=36fd55f9f03b00263ee1ccf22bbb50e5ba048e80 Author: Jakob Bornecrantz Date: Thu Jan 21 21:23:22 2010 +0100 st/xorg: Export helper function for detecting modesetting URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=16cf7e14a6dee85fadc0ab4e7c066288c3362352 Author: Jakob Bornecrantz Date: Thu Jan 21 21:28:14 2010 +0100 st/xorg: Fix warning URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=47d30b0c2c36f952cc14deefb9f937f1b0a9b531 Author: Brian Paul Date: Sun Jan 24 18:18:17 2010 -0700 st/mesa: fix int->uint conversion for negative scissor bound values Based on a patch by Xavier Chantry : If x+width or y+height is negative, then maxx or maxy will get a bogus value when converting that to unsigned. Fix this by setting 0 as minimal value. This was also triggered by teeworlds, but only with some combination of resolution and map section. For example upper part of dm2 at 1280x1024. URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=e88d6fe299cb43eedfae7f0fa3bb14c8086a8cd4 Author: Brian Paul Date: Sun Jan 24 17:54:44 2010 -0700 mesa: move _mesa_debug() call earlier in _mesa_Scissor Part of a patch from Xavier Chantry URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=fdfa4c85297d5d25e7256bf73e35309b358af86c Author: Xavier Chantry Date: Sat Jan 23 17:27:21 2010 +0100 st/mesa: fix unsigned/signed breakage in scissor commit 53174afeeb introduced a portability change that converted GLint x,y to GLuint. That breaks when x and y are negative, which seems to be allowed, and which at least one game uses : teeworlds. Rather than simply reverting the change, it seems possible to convert the 16bit unsigned to GLint so that comparisons are made between signed integers instead. This hopefully does not break anything while keeping MSVC happy. Signed-off-by: Xavier Chantry Signed-off-by: Brian Paul URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=e85cb98a169f83e1a1ad7f17cbbedaee0ea47fe1 Author: Vinson Lee Date: Sun Jan 24 00:17:00 2010 -0800 r200: Silence fprintf format warning. URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=e02dc139520fab9f7189e0ae390f72ed674bb7d7 Author: Vinson Lee Date: Sat Jan 23 23:18:33 2010 -0800 x86: Do not build read_rgba_span_x86.S on Mac OS X. read_rgba_span_x86.S uses the pseudo-ops .hidden and .type which are not recognized on Mac OS X. URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=f429b80fffc57a6165b76e9345cf5b9383edd650 Author: Vinson Lee Date: Sat Jan 23 23:12:34 2010 -0800 x86: Do not use .hidden pseudo-op on Mac OS X. The .hidden directive is an unknown pseudo-op on Mac OS X. URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=bc75ec0f3824176f3fd7182846b3ec36051945b3 Author: Vinson Lee Date: Sat Jan 23 22:59:31 2010 -0800 glapi: Do not use .type pseudo-op on Mac OS X. The .t
Mesa (master): mesa: misc GLX_INTEL_swap_event fixes
Module: Mesa Branch: master Commit: 7a9329ba99fe1242c07fbf4fd04e7a4dbeba2e72 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=7a9329ba99fe1242c07fbf4fd04e7a4dbeba2e72 Author: Robert Bragg Date: Wed Jan 20 03:01:14 2010 + mesa: misc GLX_INTEL_swap_event fixes Fixup a few issues found through testing: - update GLX names to match glproto - register DRI2WireToEvent so it actually gets called Signed-off-by: Robert Bragg --- include/GL/glx.h|6 +- include/GL/glxext.h |8 src/glx/x11/dri2.c | 20 ++-- src/glx/x11/glxclient.h |5 + src/glx/x11/glxext.c|7 +++ 5 files changed, 31 insertions(+), 15 deletions(-) diff --git a/include/GL/glx.h b/include/GL/glx.h index 82b0f22..fd53964 100644 --- a/include/GL/glx.h +++ b/include/GL/glx.h @@ -518,8 +518,12 @@ typedef struct { } GLXPbufferClobberEvent; typedef struct { +int type; +unsigned long serial; /* # of last request processed by server */ +Bool send_event; /* true if this came from a SendEvent request */ +Display *display; /* Display the event was read from */ +GLXDrawable drawable; /* drawable on which event was requested in event mask */ int event_type; -GLXDrawable drawable; int64_t ust; int64_t msc; int64_t sbc; diff --git a/include/GL/glxext.h b/include/GL/glxext.h index 36ee366..50740dd 100644 --- a/include/GL/glxext.h +++ b/include/GL/glxext.h @@ -698,10 +698,10 @@ typedef void ( * PFNGLXJOINSWAPGROUPSGIXPROC) (Display *dpy, GLXDrawable drawabl #ifndef GLX_INTEL_swap_event #define GLX_INTEL_swap_event -#define GLX_BUFFER_SWAP_COMPLETE_MASK 0x1000 -#define GLX_EXCHANGE_COMPLETE 0x8024 -#define GLX_BLIT_COMPLETE 0x8025 -#define GLX_FLIP_COMPLETE 0x8026 +#define GLX_BUFFER_SWAP_COMPLETE_INTEL_MASK 0x1000 +#define GLX_EXCHANGE_COMPLETE_INTEL0x8024 +#define GLX_BLIT_COMPLETE_INTEL0x8025 +#define GLX_FLIP_COMPLETE_INTEL0x8026 #endif #ifndef GLX_SGIX_swap_barrier diff --git a/src/glx/x11/dri2.c b/src/glx/x11/dri2.c index 2cb5d34..832935a 100644 --- a/src/glx/x11/dri2.c +++ b/src/glx/x11/dri2.c @@ -81,12 +81,15 @@ static XEXT_GENERATE_FIND_DISPLAY (DRI2FindDisplay, dri2Info, dri2ExtensionName, &dri2ExtensionHooks, - 0, NULL) + 1, NULL) static Bool DRI2WireToEvent(Display *dpy, XEvent *event, xEvent *wire) { XExtDisplayInfo *info = DRI2FindDisplay(dpy); + XExtDisplayInfo *glx_info = __glXFindDisplay(dpy); + static int glx_event_base; + static Bool found_glx_info = False; XextCheckExtension(dpy, info, dri2ExtensionName, False); @@ -95,21 +98,26 @@ DRI2WireToEvent(Display *dpy, XEvent *event, xEvent *wire) { GLXBufferSwapComplete *aevent = (GLXBufferSwapComplete *)event; xDRI2BufferSwapComplete *awire = (xDRI2BufferSwapComplete *)wire; - switch (awire->type) { + aevent->serial = _XSetLastRequestRead(dpy, (xGenericReply *) wire); + aevent->type = + (glx_info->codes->first_event + GLX_BufferSwapComplete) & 0x75; + aevent->send_event = (awire->type & 0x80) != 0; + aevent->display = dpy; + aevent->drawable = awire->drawable; + switch (awire->event_type) { case DRI2_EXCHANGE_COMPLETE: -aevent->event_type = GLX_EXCHANGE_COMPLETE; +aevent->event_type = GLX_EXCHANGE_COMPLETE_INTEL; break; case DRI2_BLIT_COMPLETE: -aevent->event_type = GLX_BLIT_COMPLETE; +aevent->event_type = GLX_BLIT_COMPLETE_INTEL; break; case DRI2_FLIP_COMPLETE: -aevent->event_type = GLX_FLIP_COMPLETE; +aevent->event_type = GLX_FLIP_COMPLETE_INTEL; break; default: /* unknown swap completion type */ return False; } - aevent->drawable = awire->drawable; aevent->ust = ((CARD64)awire->ust_hi << 32) | awire->ust_lo; aevent->msc = ((CARD64)awire->msc_hi << 32) | awire->msc_lo; aevent->sbc = ((CARD64)awire->sbc_hi << 32) | awire->sbc_lo; diff --git a/src/glx/x11/glxclient.h b/src/glx/x11/glxclient.h index ded4f5a..e0b286b 100644 --- a/src/glx/x11/glxclient.h +++ b/src/glx/x11/glxclient.h @@ -41,6 +41,7 @@ #define NEED_EVENTS #include #include +#include #define GLX_GLXEXT_PROTOTYPES #include #include @@ -793,6 +794,10 @@ extern GLboolean __glXGetMscRateOML(Display * dpy, GLXDrawable drawable, GLboolean __driGetMscRateOML(__DRIdrawable * draw, int32_t * numerator, int32_t * denominator, void *private); + +/* So that dri2.c:DRI2WireToEvent() can access + * glx_info->codes->first_event */ +XExtDisplayInfo *__glXFindDisplay (Display *dpy); #endif #endif /* !__GLX_client_h__ */ diff
Mesa (master): egl/xdri: Update with glxclient.h change.
Module: Mesa Branch: master Commit: 0d2d40451d01a07db515452561c71eaacb789872 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=0d2d40451d01a07db515452561c71eaacb789872 Author: Chia-I Wu Date: Tue Jan 26 10:46:32 2010 +0800 egl/xdri: Update with glxclient.h change. __glXFindDisplay is no longer static since 7a9329ba99fe1242c07fbf4fd04e7a4dbeba2e72. --- src/egl/drivers/xdri/glxinit.c |1 - 1 files changed, 0 insertions(+), 1 deletions(-) diff --git a/src/egl/drivers/xdri/glxinit.c b/src/egl/drivers/xdri/glxinit.c index 5c0fbc6..ba61327 100644 --- a/src/egl/drivers/xdri/glxinit.c +++ b/src/egl/drivers/xdri/glxinit.c @@ -53,7 +53,6 @@ static /* const */ XExtensionHooks __glXExtensionHooks = { NULL, /* error_string */ }; -static XEXT_GENERATE_FIND_DISPLAY(__glXFindDisplay, __glXExtensionInfo, __glXExtensionName, &__glXExtensionHooks, __GLX_NUMBER_EVENTS, NULL) ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (master): docs: Update EGL documentation.
Module: Mesa Branch: master Commit: a6342afe502fe52190be4d97df58eb3406b70246 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=a6342afe502fe52190be4d97df58eb3406b70246 Author: Chia-I Wu Date: Tue Jan 26 10:54:45 2010 +0800 docs: Update EGL documentation. Add --enable-gallium-swrast to the example. Document missing --with-egl-driver-dir and update TODOs. --- docs/egl.html | 10 +- 1 files changed, 9 insertions(+), 1 deletions(-) diff --git a/docs/egl.html b/docs/egl.html index 0882598..305e5f6 100644 --- a/docs/egl.html +++ b/docs/egl.html @@ -32,7 +32,7 @@ cards. the Gallium driver for your hardware. For example - $ ./configure --with-state-trackers=egl,es,vega --enable-gallium-intel + $ ./configure --with-state-trackers=egl,es,vega --enable-gallium-{swrast,intel} The main library will be enabled by default. The egl state @@ -62,6 +62,13 @@ will not be built. +--with-egl-driver-dir + +The directory EGL drivers should be installed to. If not specified, EGL +drivers will be installed to ${libdir}/egl. + + + --with-egl-displays List the window system(s) to support. It is by default x11, @@ -227,6 +234,7 @@ be found at src/gallium/state_trackers/egl/. Pass the conformance tests Better automatic driver selection: EGL_DISPLAY loads all drivers and might eat too much memory. +Stop using glxinit.c and sources from src/glx/x11/ ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (master): glx: Build GLX normally.
Module: Mesa Branch: master Commit: 146931769c75978c58ac0088e8ab630fc41074ec URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=146931769c75978c58ac0088e8ab630fc41074ec Author: Chia-I Wu Date: Thu Jan 21 17:58:28 2010 +0800 glx: Build GLX normally. GLX was built specially and before Mesa core because libglapi.a could not be built with IN_DRI_DRIVER defined. This is no longer the case since 6e99e6ddbf488f6955e34ef0bc438fdcb4d90f74. It works fine in my (limited) testing with both direct and indirect rendering. I also compare the outputs after preprocessing (gcc -E) with or without this commit, and they are identical. --- configure.ac |2 +- src/glx/x11/Makefile | 21 + 2 files changed, 10 insertions(+), 13 deletions(-) diff --git a/configure.ac b/configure.ac index 6f8b76d..10e0bd4 100644 --- a/configure.ac +++ b/configure.ac @@ -445,7 +445,7 @@ xlib) GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS xlib" ;; dri) -CORE_DIRS="glx/x11 $CORE_DIRS" +SRC_DIRS="$SRC_DIRS glx/x11" DRIVER_DIRS="dri" WINDOW_SYSTEM="dri" GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS drm" diff --git a/src/glx/x11/Makefile b/src/glx/x11/Makefile index 86d84d4..e681be8 100644 --- a/src/glx/x11/Makefile +++ b/src/glx/x11/Makefile @@ -1,7 +1,7 @@ TOP = ../../.. include $(TOP)/configs/current -EXTRA_DEFINES = -DXF86VIDMODE -D_REENTRANT -UIN_DRI_DRIVER \ +EXTRA_DEFINES = -DXF86VIDMODE -D_REENTRANT \ -DDEFAULT_DRIVER_DIR=\"$(DRI_DRIVER_SEARCH_DIR)\" SOURCES = \ @@ -39,13 +39,9 @@ SOURCES = \ dri2_glx.c \ dri2.c -include $(TOP)/src/mesa/sources.mak +GLAPI_LIB = $(TOP)/src/mesa/libglapi.a -MESA_GLAPI_ASM_SOURCES = $(addprefix $(TOP)/src/mesa/, $(GLAPI_ASM_SOURCES)) -MESA_GLAPI_SOURCES = $(addprefix $(TOP)/src/mesa/, $(GLAPI_SOURCES)) -MESA_GLAPI_OBJECTS = $(addprefix $(TOP)/src/mesa/, $(GLAPI_OBJECTS)) - -OBJECTS = $(SOURCES:.c=.o) $(MESA_GLAPI_OBJECTS) +OBJECTS = $(SOURCES:.c=.o) INCLUDES = -I. \ -I$(TOP)/include \ @@ -70,18 +66,19 @@ INCLUDES = -I. \ default: depend $(TOP)/$(LIB_DIR)/$(GL_LIB_NAME) # Make libGL -$(TOP)/$(LIB_DIR)/$(GL_LIB_NAME): $(OBJECTS) Makefile +$(TOP)/$(LIB_DIR)/$(GL_LIB_NAME): $(OBJECTS) $(GLAPI_LIB) Makefile $(MKLIB) -o $(GL_LIB) -linker '$(CC)' -ldflags '$(LDFLAGS)' \ -major 1 -minor 2 $(MKLIB_OPTIONS) \ -install $(TOP)/$(LIB_DIR) -id $(INSTALL_LIB_DIR)/lib$(GL_LIB).1.dylib \ - $(GL_LIB_DEPS) $(OBJECTS) + $(GL_LIB_DEPS) $(OBJECTS) $(GLAPI_LIB) +$(GLAPI_LIB): + @$(MAKE) -C $(TOP)/src/mesa libglapi.a -depend: $(SOURCES) $(MESA_GLAPI_SOURCES) $(MESA_GLAPI_ASM_SOURCES) Makefile +depend: $(SOURCES) Makefile rm -f depend touch depend - $(MKDEP) $(MKDEP_OPTIONS) $(INCLUDES) $(SOURCES) \ - $(MESA_GLAPI_SOURCES) $(MESA_GLAPI_ASM_SOURCES) + $(MKDEP) $(MKDEP_OPTIONS) $(INCLUDES) $(SOURCES) # Emacs tags ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (master): docs: Mention EGL and OpenGL ES in 7.8 release notes.
Module: Mesa Branch: master Commit: 74aa773f7cbe456ca8f25c8a9a2c911795cc2a63 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=74aa773f7cbe456ca8f25c8a9a2c911795cc2a63 Author: Chia-I Wu Date: Tue Jan 26 11:35:30 2010 +0800 docs: Mention EGL and OpenGL ES in 7.8 release notes. --- docs/relnotes-7.8.html |2 ++ 1 files changed, 2 insertions(+), 0 deletions(-) diff --git a/docs/relnotes-7.8.html b/docs/relnotes-7.8.html index 717b962..4fcc491 100644 --- a/docs/relnotes-7.8.html +++ b/docs/relnotes-7.8.html @@ -36,6 +36,8 @@ tbd GL_NV_conditional_render extension (swrast driver only) GL_EXT_draw_buffers2 extension (swrast driver only) +Much improved support for EGL in Mesa +New state trackers for OpenGL ES 1.1 and 2.0 ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (master): i965: Fix build after merge of mesa stable branch.
Module: Mesa Branch: master Commit: a098fd71d7b7347bb8f1841bad0e7ce24e0e6de9 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=a098fd71d7b7347bb8f1841bad0e7ce24e0e6de9 Author: Eric Anholt Date: Mon Jan 25 22:27:46 2010 -0800 i965: Fix build after merge of mesa stable branch. --- src/mesa/drivers/dri/i965/brw_context.c |1 + 1 files changed, 1 insertions(+), 0 deletions(-) diff --git a/src/mesa/drivers/dri/i965/brw_context.c b/src/mesa/drivers/dri/i965/brw_context.c index 568db97..65f51be 100644 --- a/src/mesa/drivers/dri/i965/brw_context.c +++ b/src/mesa/drivers/dri/i965/brw_context.c @@ -37,6 +37,7 @@ #include "shader/shader_api.h" #include "brw_context.h" +#include "brw_defines.h" #include "brw_draw.h" #include "brw_state.h" #include "intel_span.h" ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (master): i965: Remove unnecessary malloc/ free in VS binding table setup.
Module: Mesa Branch: master Commit: 5e1851b144a97bd577409dd5c6f3f6f45b4ff56f URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=5e1851b144a97bd577409dd5c6f3f6f45b4ff56f Author: Eric Anholt Date: Tue Jan 19 15:26:56 2010 -0800 i965: Remove unnecessary malloc/free in VS binding table setup. --- src/mesa/drivers/dri/i965/brw_vs_surface_state.c |4 +--- src/mesa/drivers/dri/intel/intel_batchbuffer.c |3 ++- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/src/mesa/drivers/dri/i965/brw_vs_surface_state.c b/src/mesa/drivers/dri/i965/brw_vs_surface_state.c index ca93ca7..ead623f 100644 --- a/src/mesa/drivers/dri/i965/brw_vs_surface_state.c +++ b/src/mesa/drivers/dri/i965/brw_vs_surface_state.c @@ -155,7 +155,7 @@ brw_vs_get_binding_table(struct brw_context *brw) if (bind_bo == NULL) { GLuint data_size = BRW_VS_MAX_SURF * sizeof(GLuint); - uint32_t *data = malloc(data_size); + uint32_t data[BRW_VS_MAX_SURF]; int i; for (i = 0; i < BRW_VS_MAX_SURF; i++) @@ -180,8 +180,6 @@ brw_vs_get_binding_table(struct brw_context *brw) I915_GEM_DOMAIN_INSTRUCTION, 0); } } - - free(data); } return bind_bo; diff --git a/src/mesa/drivers/dri/intel/intel_batchbuffer.c b/src/mesa/drivers/dri/intel/intel_batchbuffer.c index 3a4b21a..f18fb91 100644 --- a/src/mesa/drivers/dri/intel/intel_batchbuffer.c +++ b/src/mesa/drivers/dri/intel/intel_batchbuffer.c @@ -167,7 +167,8 @@ _intel_batchbuffer_flush(struct intel_batchbuffer *batch, const char *file, struct intel_context *intel = batch->intel; GLuint used = batch->ptr - batch->map; - if (intel->first_post_swapbuffers_batch == NULL) { + if (!intel->using_dri2_swapbuffers && + intel->first_post_swapbuffers_batch == NULL) { intel->first_post_swapbuffers_batch = intel->batch->buf; drm_intel_bo_reference(intel->first_post_swapbuffers_batch); } ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (master): intel: Don' t do client-side frame throttling with DRI2 SwapBuffers.
Module: Mesa Branch: master Commit: 7aed23c36288c2b343073d6d06ca0ea167805cd3 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=7aed23c36288c2b343073d6d06ca0ea167805cd3 Author: Eric Anholt Date: Mon Jan 25 14:53:50 2010 -0800 intel: Don't do client-side frame throttling with DRI2 SwapBuffers. The server side does the throttling on our behalf now by putting the client to sleep, so we don't need our previous hacks for limiting the number of outstanding frames. Same effect as 7d4e674b212c9dc6408c13913a399bd4a2b9a1e3. --- src/mesa/drivers/dri/intel/intel_context.c |3 ++- src/mesa/drivers/dri/intel/intel_context.h |1 + src/mesa/drivers/dri/intel/intel_screen.c |4 3 files changed, 7 insertions(+), 1 deletions(-) diff --git a/src/mesa/drivers/dri/intel/intel_context.c b/src/mesa/drivers/dri/intel/intel_context.c index cac9b7e..3896bfa 100644 --- a/src/mesa/drivers/dri/intel/intel_context.c +++ b/src/mesa/drivers/dri/intel/intel_context.c @@ -521,7 +521,8 @@ intel_glFlush(GLcontext *ctx) * and getting our hands on that doesn't seem worth it, so we just us the * first batch we emitted after the last swap. */ - if (intel->first_post_swapbuffers_batch != NULL) { + if (!intel->using_dri2_swapbuffers && + intel->first_post_swapbuffers_batch != NULL) { drm_intel_bo_wait_rendering(intel->first_post_swapbuffers_batch); drm_intel_bo_unreference(intel->first_post_swapbuffers_batch); intel->first_post_swapbuffers_batch = NULL; diff --git a/src/mesa/drivers/dri/intel/intel_context.h b/src/mesa/drivers/dri/intel/intel_context.h index 6ba281c..57c3391 100644 --- a/src/mesa/drivers/dri/intel/intel_context.h +++ b/src/mesa/drivers/dri/intel/intel_context.h @@ -186,6 +186,7 @@ struct intel_context struct intel_batchbuffer *batch; drm_intel_bo *first_post_swapbuffers_batch; GLboolean no_batch_wrap; + GLboolean using_dri2_swapbuffers; struct { diff --git a/src/mesa/drivers/dri/intel/intel_screen.c b/src/mesa/drivers/dri/intel/intel_screen.c index a98600b..b170317 100644 --- a/src/mesa/drivers/dri/intel/intel_screen.c +++ b/src/mesa/drivers/dri/intel/intel_screen.c @@ -126,6 +126,10 @@ intelDRI2Flush(__DRIdrawable *drawable) static void intelDRI2FlushInvalidate(__DRIdrawable *drawable) { + struct intel_context *intel = drawable->driContextPriv->driverPrivate; + + intel->using_dri2_swapbuffers = GL_TRUE; + intelDRI2Flush(drawable); drawable->validBuffers = GL_FALSE; } ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (master): Revert "intel: Use the new DRI2 flush invalidate entrypoint to signal frame done."
Module: Mesa Branch: master Commit: c7fc9bfb2207638a479ddaff3ad108ffd9cd294a URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=c7fc9bfb2207638a479ddaff3ad108ffd9cd294a Author: Eric Anholt Date: Mon Jan 25 14:48:57 2010 -0800 Revert "intel: Use the new DRI2 flush invalidate entrypoint to signal frame done." This reverts commit 7d4e674b212c9dc6408c13913a399bd4a2b9a1e3. It broke throttling in the non-new-DRI2 case. --- src/mesa/drivers/dri/intel/intel_context.c | 20 src/mesa/drivers/dri/intel/intel_screen.c | 21 - 2 files changed, 20 insertions(+), 21 deletions(-) diff --git a/src/mesa/drivers/dri/intel/intel_context.c b/src/mesa/drivers/dri/intel/intel_context.c index 5f2a473..cac9b7e 100644 --- a/src/mesa/drivers/dri/intel/intel_context.c +++ b/src/mesa/drivers/dri/intel/intel_context.c @@ -505,7 +505,27 @@ intelFlush(GLcontext * ctx) static void intel_glFlush(GLcontext *ctx) { + struct intel_context *intel = intel_context(ctx); + intel_flush(ctx, GL_TRUE); + + /* We're using glFlush as an indicator that a frame is done, which is +* what DRI2 does before calling SwapBuffers (and means we should catch +* people doing front-buffer rendering, as well).. +* +* Wait for the swapbuffers before the one we just emitted, so we don't +* get too many swaps outstanding for apps that are GPU-heavy but not +* CPU-heavy. +* +* Unfortunately, we don't have a handle to the batch containing the swap, +* and getting our hands on that doesn't seem worth it, so we just us the +* first batch we emitted after the last swap. +*/ + if (intel->first_post_swapbuffers_batch != NULL) { + drm_intel_bo_wait_rendering(intel->first_post_swapbuffers_batch); + drm_intel_bo_unreference(intel->first_post_swapbuffers_batch); + intel->first_post_swapbuffers_batch = NULL; + } } void diff --git a/src/mesa/drivers/dri/intel/intel_screen.c b/src/mesa/drivers/dri/intel/intel_screen.c index fe50416..a98600b 100644 --- a/src/mesa/drivers/dri/intel/intel_screen.c +++ b/src/mesa/drivers/dri/intel/intel_screen.c @@ -126,29 +126,8 @@ intelDRI2Flush(__DRIdrawable *drawable) static void intelDRI2FlushInvalidate(__DRIdrawable *drawable) { - struct intel_context *intel = drawable->driContextPriv->driverPrivate; - intelDRI2Flush(drawable); drawable->validBuffers = GL_FALSE; - - /* We're using FlushInvalidate as an indicator that a frame is -* done. It's only called immediately after SwapBuffers, so it -* won't affect front-buffer rendering or applications explicitly -* managing swap regions using MESA_copy_buffer. -* -* Wait for the swapbuffers before the one we just emitted, so we don't -* get too many swaps outstanding for apps that are GPU-heavy but not -* CPU-heavy. -* -* Unfortunately, we don't have a handle to the batch containing the swap, -* and getting our hands on that doesn't seem worth it, so we just use the -* first batch we emitted after the last swap. -*/ - if (intel->first_post_swapbuffers_batch != NULL) { - drm_intel_bo_wait_rendering(intel->first_post_swapbuffers_batch); - drm_intel_bo_unreference(intel->first_post_swapbuffers_batch); - intel->first_post_swapbuffers_batch = NULL; - } } static const struct __DRI2flushExtensionRec intelFlushExtension = { ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-commit