On Mon, Mar 02, 2015 at 03:39:27PM -0800, jeff.mcgee@xxxxxxxxx wrote: > From: Jeff McGee <jeff.mcgee@xxxxxxxxx> 2 small details, but otherwise: Reviewed-by: Damien Lespiau <damien.lespiau@xxxxxxxxx> > Update kernel interface with new I915_GETPARAM ioctl entries for > subslice total and EU total. Add a wrapping function for each > parameter. Userspace drivers need these values when constructing > GPGPU commands. This kernel query method is intended to replace > the PCI ID-based tables that userspace drivers currently maintain. > The kernel driver can employ fuse register reads as needed to > ensure the most accurate determination of GT config attributes. > This first became important with Cherryview in which the config > could differ between devices with the same PCI ID. > > The kernel detection of these values is device-specific. Userspace > drivers should continue to maintain ID-based tables for older > devices which return ENODEV when using this query. This should probably part of some comment near the API entry point. > > For: VIZ-4636 > Signed-off-by: Jeff McGee <jeff.mcgee@xxxxxxxxx> > --- > include/drm/i915_drm.h | 2 ++ > intel/intel_bufmgr.h | 4 ++++ > intel/intel_bufmgr_gem.c | 31 +++++++++++++++++++++++++++++++ > 3 files changed, 37 insertions(+) > > diff --git a/include/drm/i915_drm.h b/include/drm/i915_drm.h > index 15dd01d..e34f5b2 100644 > --- a/include/drm/i915_drm.h > +++ b/include/drm/i915_drm.h > @@ -340,6 +340,8 @@ typedef struct drm_i915_irq_wait { > #define I915_PARAM_HAS_EXEC_HANDLE_LUT 26 > #define I915_PARAM_HAS_WT 27 > #define I915_PARAM_CMD_PARSER_VERSION 28 > +#define I915_PARAM_SUBSLICE_TOTAL 32 > +#define I915_PARAM_EU_TOTAL 33 > > typedef struct drm_i915_getparam { > int param; > diff --git a/intel/intel_bufmgr.h b/intel/intel_bufmgr.h > index be83a56..4b2472e 100644 > --- a/intel/intel_bufmgr.h > +++ b/intel/intel_bufmgr.h > @@ -37,6 +37,7 @@ > #include <stdio.h> > #include <stdint.h> > #include <stdio.h> > +#include <stdbool.h> But you don't seem to use bool or _Bool in the rest of the patch? > struct drm_clip_rect; > > @@ -264,6 +265,9 @@ int drm_intel_get_reset_stats(drm_intel_context *ctx, > uint32_t *active, > uint32_t *pending); > > +int drm_intel_get_subslice_total(int fd, unsigned int *subslice_total); > +int drm_intel_get_eu_total(int fd, unsigned int *eu_total); > + > /** @{ Compatibility defines to keep old code building despite the symbol rename > * from dri_* to drm_intel_* > */ > diff --git a/intel/intel_bufmgr_gem.c b/intel/intel_bufmgr_gem.c > index 78875fd..2d77f32 100644 > --- a/intel/intel_bufmgr_gem.c > +++ b/intel/intel_bufmgr_gem.c > @@ -3292,6 +3292,37 @@ drm_intel_reg_read(drm_intel_bufmgr *bufmgr, > return ret; > } > > +drm_public int > +drm_intel_get_subslice_total(int fd, unsigned int *subslice_total) > +{ > + drm_i915_getparam_t gp; > + int ret; > + > + memclear(gp); > + gp.value = (int*)subslice_total; > + gp.param = I915_PARAM_SUBSLICE_TOTAL; > + ret = drmIoctl(fd, DRM_IOCTL_I915_GETPARAM, &gp); > + if (ret) > + return -errno; > + > + return 0; > +} > + > +drm_public int > +drm_intel_get_eu_total(int fd, unsigned int *eu_total) > +{ > + drm_i915_getparam_t gp; > + int ret; > + > + memclear(gp); > + gp.value = (int*)eu_total; > + gp.param = I915_PARAM_EU_TOTAL; > + ret = drmIoctl(fd, DRM_IOCTL_I915_GETPARAM, &gp); > + if (ret) > + return -errno; > + > + return 0; > +} > > /** > * Annotate the given bo for use in aub dumping. > -- > 2.3.0 > > _______________________________________________ > dri-devel mailing list > dri-devel@xxxxxxxxxxxxxxxxxxxxx > http://lists.freedesktop.org/mailman/listinfo/dri-devel _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/intel-gfx