libdrm/Makefile.am | 3 +-- libdrm/intel/Makefile.am | 1 + libdrm/intel/intel_bufmgr.c | 10 ++++++++++ libdrm/intel/intel_bufmgr.h | 2 ++ libdrm/intel/intel_bufmgr_fake.c | 20 ++++++++++++-------- libdrm/intel/intel_bufmgr_gem.c | 23 +++++++++++++++++++++++ libdrm/intel/intel_bufmgr_priv.h | 9 +++++++++ 7 files changed, 58 insertions(+), 10 deletions(-)
New commits: commit 458e2d5bc5f949d00cfcc9a3f9ce89f0c9f5628c Author: Eric Anholt <[EMAIL PROTECTED]> Date: Tue Oct 14 13:33:38 2008 -0700 intel: Fix compile warning. diff --git a/libdrm/intel/intel_bufmgr_fake.c b/libdrm/intel/intel_bufmgr_fake.c index cfe9a73..8e476c4 100644 --- a/libdrm/intel/intel_bufmgr_fake.c +++ b/libdrm/intel/intel_bufmgr_fake.c @@ -732,7 +732,6 @@ static void dri_fake_bo_wait_rendering(dri_bo *bo) { dri_bufmgr_fake *bufmgr_fake = (dri_bufmgr_fake *)bo->bufmgr; - dri_bo_fake *bo_fake = (dri_bo_fake *)bo; pthread_mutex_lock(&bufmgr_fake->lock); dri_fake_bo_wait_rendering_locked(bo); commit 993383873c215ab11975d98b93f131a4e3ea7ce6 Author: Eric Anholt <[EMAIL PROTECTED]> Date: Tue Oct 14 13:18:11 2008 -0700 intel: Add interface for getting tiling mode of a bo. diff --git a/libdrm/intel/intel_bufmgr.c b/libdrm/intel/intel_bufmgr.c index fc7284b..92b6046 100644 --- a/libdrm/intel/intel_bufmgr.c +++ b/libdrm/intel/intel_bufmgr.c @@ -192,3 +192,13 @@ int dri_bo_set_tiling(dri_bo *bo, uint32_t *tiling_mode) *tiling_mode = I915_TILING_NONE; return 0; } + +int dri_bo_get_tiling(dri_bo *bo, uint32_t *tiling_mode, uint32_t *swizzle_mode) +{ + if (bo->bufmgr->bo_get_tiling) + return bo->bufmgr->bo_get_tiling(bo, tiling_mode, swizzle_mode); + + *tiling_mode = I915_TILING_NONE; + *swizzle_mode = I915_BIT_6_SWIZZLE_NONE; + return 0; +} diff --git a/libdrm/intel/intel_bufmgr.h b/libdrm/intel/intel_bufmgr.h index c44d596..0c7b0e4 100644 --- a/libdrm/intel/intel_bufmgr.h +++ b/libdrm/intel/intel_bufmgr.h @@ -87,6 +87,8 @@ int dri_bo_emit_reloc(dri_bo *reloc_buf, int dri_bo_pin(dri_bo *buf, uint32_t alignment); int dri_bo_unpin(dri_bo *buf); int dri_bo_set_tiling(dri_bo *buf, uint32_t *tiling_mode); +int dri_bo_get_tiling(dri_bo *buf, uint32_t *tiling_mode, + uint32_t *swizzle_mode); int dri_bo_flink(dri_bo *buf, uint32_t *name); /* intel_bufmgr_gem.c */ diff --git a/libdrm/intel/intel_bufmgr_gem.c b/libdrm/intel/intel_bufmgr_gem.c index 9bd4441..33853c4 100644 --- a/libdrm/intel/intel_bufmgr_gem.c +++ b/libdrm/intel/intel_bufmgr_gem.c @@ -873,6 +873,28 @@ dri_gem_bo_set_tiling(dri_bo *bo, uint32_t *tiling_mode) } static int +dri_gem_bo_get_tiling(dri_bo *bo, uint32_t *tiling_mode, uint32_t *swizzle_mode) +{ + dri_bufmgr_gem *bufmgr_gem = (dri_bufmgr_gem *)bo->bufmgr; + dri_bo_gem *bo_gem = (dri_bo_gem *)bo; + struct drm_i915_gem_get_tiling get_tiling; + int ret; + + get_tiling.handle = bo_gem->gem_handle; + + ret = ioctl(bufmgr_gem->fd, DRM_IOCTL_I915_GEM_GET_TILING, &get_tiling); + if (ret != 0) { + *tiling_mode = I915_TILING_NONE; + *swizzle_mode = I915_BIT_6_SWIZZLE_NONE; + return -errno; + } + + *tiling_mode = get_tiling.tiling_mode; + *swizzle_mode = get_tiling.swizzle_mode; + return 0; +} + +static int dri_gem_bo_flink(dri_bo *bo, uint32_t *name) { dri_bufmgr_gem *bufmgr_gem = (dri_bufmgr_gem *)bo->bufmgr; @@ -959,6 +981,7 @@ intel_bufmgr_gem_init(int fd, int batch_size) bufmgr_gem->bufmgr.bo_emit_reloc = dri_gem_bo_emit_reloc; bufmgr_gem->bufmgr.bo_pin = dri_gem_bo_pin; bufmgr_gem->bufmgr.bo_unpin = dri_gem_bo_unpin; + bufmgr_gem->bufmgr.bo_get_tiling = dri_gem_bo_get_tiling; bufmgr_gem->bufmgr.bo_set_tiling = dri_gem_bo_set_tiling; bufmgr_gem->bufmgr.bo_flink = dri_gem_bo_flink; bufmgr_gem->bufmgr.bo_exec = dri_gem_bo_exec; diff --git a/libdrm/intel/intel_bufmgr_priv.h b/libdrm/intel/intel_bufmgr_priv.h index 7f39bfc..cbf3b31 100644 --- a/libdrm/intel/intel_bufmgr_priv.h +++ b/libdrm/intel/intel_bufmgr_priv.h @@ -150,6 +150,15 @@ struct _dri_bufmgr { */ int (*bo_set_tiling) (dri_bo *bo, uint32_t *tiling_mode); /** + * Get the current tiling (and resulting swizzling) mode for the bo. + * + * \param buf Buffer to get tiling mode for + * \param tiling_mode returned tiling mode + * \param swizzle_mode returned swizzling mode + */ + int (*bo_get_tiling) (dri_bo *bo, uint32_t *tiling_mode, + uint32_t *swizzle_mode); + /** * Create a visible name for a buffer which can be used by other apps * * \param buf Buffer to create a name for commit d9c2f65dd8e50736a33e97a55c257ef6843e1ce7 Author: Julien Cristau <[EMAIL PROTECTED]> Date: Tue Oct 14 01:25:57 2008 +0200 link libdrm_intel properly libdrm_intel needs symbols from libdrm, so link against it. diff --git a/libdrm/Makefile.am b/libdrm/Makefile.am index dbe58fb..63f6e64 100644 --- a/libdrm/Makefile.am +++ b/libdrm/Makefile.am @@ -18,7 +18,7 @@ # IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN # CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -SUBDIRS = intel +SUBDIRS = . intel libdrm_la_LTLIBRARIES = libdrm.la libdrm_ladir = $(libdir) @@ -27,7 +27,6 @@ libdrm_la_LDFLAGS = -version-number 2:3:0 -no-undefined AM_CFLAGS = -I$(top_srcdir)/shared-core libdrm_la_SOURCES = xf86drm.c xf86drmHash.c xf86drmRandom.c xf86drmSL.c \ libdrm_lists.h -libdrm_la_LIBADD = @PTHREADSTUBS_LIBS@ libdrmincludedir = ${includedir} libdrminclude_HEADERS = xf86drm.h diff --git a/libdrm/intel/Makefile.am b/libdrm/intel/Makefile.am index 92388c2..5e3dee0 100644 --- a/libdrm/intel/Makefile.am +++ b/libdrm/intel/Makefile.am @@ -32,6 +32,7 @@ AM_CFLAGS = \ libdrm_intel_la_LTLIBRARIES = libdrm_intel.la libdrm_intel_ladir = $(libdir) libdrm_intel_la_LDFLAGS = -version-number 1:0:0 -no-undefined +libdrm_intel_la_LIBADD = ../libdrm.la @PTHREADSTUBS_LIBS@ libdrm_intel_la_SOURCES = \ intel_bufmgr.c \ commit 3e03d781f7c41a88d5d5f895be9c443bf3592ef0 Author: Eric Anholt <[EMAIL PROTECTED]> Date: Mon Oct 13 13:41:10 2008 -0700 intel: Avoid pthread mutex recursion in bufmgr_fake. Bug #18035. Fixes deadlock in glean texCube testcase. diff --git a/libdrm/intel/intel_bufmgr_fake.c b/libdrm/intel/intel_bufmgr_fake.c index 1be4698..cfe9a73 100644 --- a/libdrm/intel/intel_bufmgr_fake.c +++ b/libdrm/intel/intel_bufmgr_fake.c @@ -717,20 +717,25 @@ dri_bufmgr_fake_wait_idle(dri_bufmgr_fake *bufmgr_fake) * the necessary flushing. */ static void -dri_fake_bo_wait_rendering(dri_bo *bo) +dri_fake_bo_wait_rendering_locked(dri_bo *bo) { dri_bufmgr_fake *bufmgr_fake = (dri_bufmgr_fake *)bo->bufmgr; dri_bo_fake *bo_fake = (dri_bo_fake *)bo; - pthread_mutex_lock(&bufmgr_fake->lock); - - if (bo_fake->block == NULL || !bo_fake->block->fenced) { - pthread_mutex_unlock(&bufmgr_fake->lock); + if (bo_fake->block == NULL || !bo_fake->block->fenced) return; - } _fence_wait_internal(bufmgr_fake, bo_fake->block->fence); +} + +static void +dri_fake_bo_wait_rendering(dri_bo *bo) +{ + dri_bufmgr_fake *bufmgr_fake = (dri_bufmgr_fake *)bo->bufmgr; + dri_bo_fake *bo_fake = (dri_bo_fake *)bo; + pthread_mutex_lock(&bufmgr_fake->lock); + dri_fake_bo_wait_rendering_locked(bo); pthread_mutex_unlock(&bufmgr_fake->lock); } @@ -972,7 +977,7 @@ dri_fake_bo_map_locked(dri_bo *bo, int write_enable) if (!(bo_fake->flags & BM_NO_FENCE_SUBDATA) && bo_fake->block->fenced) { - dri_fake_bo_wait_rendering(bo); + dri_fake_bo_wait_rendering_locked(bo); } bo->virtual = bo_fake->block->virtual; @@ -987,7 +992,7 @@ dri_fake_bo_map_locked(dri_bo *bo, int write_enable) if ((bo_fake->card_dirty == 1) && bo_fake->block) { if (bo_fake->block->fenced) - dri_fake_bo_wait_rendering(bo); + dri_fake_bo_wait_rendering_locked(bo); memcpy(bo_fake->backing_store, bo_fake->block->virtual, bo_fake->block->bo->size); bo_fake->card_dirty = 0; commit c6109df93bc062d3ec2ff2808babe826532d11b3 Author: Dave Airlie <[EMAIL PROTECTED]> Date: Mon Oct 13 07:16:33 2008 +1000 libdrm: don't depend or link to libdrm_intel diff --git a/libdrm/Makefile.am b/libdrm/Makefile.am index 543b278..dbe58fb 100644 --- a/libdrm/Makefile.am +++ b/libdrm/Makefile.am @@ -27,7 +27,7 @@ libdrm_la_LDFLAGS = -version-number 2:3:0 -no-undefined AM_CFLAGS = -I$(top_srcdir)/shared-core libdrm_la_SOURCES = xf86drm.c xf86drmHash.c xf86drmRandom.c xf86drmSL.c \ libdrm_lists.h -libdrm_la_LIBADD = intel/libdrm_intel.la @PTHREADSTUBS_LIBS@ +libdrm_la_LIBADD = @PTHREADSTUBS_LIBS@ libdrmincludedir = ${includedir} libdrminclude_HEADERS = xf86drm.h -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]