On Thu, Jun 05, 2014 at 08:39:29PM +0200, Bruno Jimenez wrote: > > With a couple of changes, it applied cleanly to 3.14.5 (Arch's stable). > And with the attached patch as #2 for my series I can get the correct > number of compute units for my CEDAR. > > But I don't know how or where I should add this new query param, given > that it hasn't been added to the kernel yet. For now I have hardcoded > the '0x20'. > > Thanks for all Alex! > Bruno > >
> From d2f37842171fdaff2a31d756c15479fc56646153 Mon Sep 17 00:00:00 2001 > From: =?UTF-8?q?Bruno=20Jim=C3=A9nez?= <brunoji...@gmail.com> > Date: Thu, 5 Jun 2014 20:01:56 +0200 > Subject: [PATCH 2/3] radeon/compute: Implement > PIPE_COMPUTE_CAP_MAX_COMPUTE_UNITS > > --- > src/gallium/drivers/radeon/r600_pipe_common.c | 7 +++++++ > src/gallium/winsys/radeon/drm/radeon_drm_winsys.c | 4 ++++ > src/gallium/winsys/radeon/drm/radeon_winsys.h | 1 + > 3 files changed, 12 insertions(+) > > diff --git a/src/gallium/drivers/radeon/r600_pipe_common.c > b/src/gallium/drivers/radeon/r600_pipe_common.c > index 70c4d1a..e7d33a0 100644 > --- a/src/gallium/drivers/radeon/r600_pipe_common.c > +++ b/src/gallium/drivers/radeon/r600_pipe_common.c > @@ -519,6 +519,13 @@ static int r600_get_compute_param(struct pipe_screen > *screen, > } > return sizeof(uint32_t); > > + case PIPE_COMPUTE_CAP_MAX_COMPUTE_UNITS: > + if (ret) { > + uint32_t *max_compute_units = ret; > + *max_compute_units = rscreen->info.max_compute_units; > + } > + return sizeof(uint32_t); > + > default: > fprintf(stderr, "unknown PIPE_COMPUTE_CAP %d\n", param); > return 0; > diff --git a/src/gallium/winsys/radeon/drm/radeon_drm_winsys.c > b/src/gallium/winsys/radeon/drm/radeon_drm_winsys.c > index e54e79e..124f6fa 100644 > --- a/src/gallium/winsys/radeon/drm/radeon_drm_winsys.c > +++ b/src/gallium/winsys/radeon/drm/radeon_drm_winsys.c > @@ -382,6 +382,10 @@ static boolean do_winsys_init(struct radeon_drm_winsys > *ws) > radeon_get_drm_value(ws->fd, RADEON_INFO_MAX_PIPES, NULL, > &ws->info.r600_max_pipes); > > + /* RADEON_INFO_ACTIVE_CU_COUNT == 0x20 */ This should be a define at the top of the file, just like we do with the other RADEON_INFO_* values. -Tom > + radeon_get_drm_value(ws->fd, 0x20, NULL, > + &ws->info.max_compute_units); > + > if (radeon_get_drm_value(ws->fd, RADEON_INFO_SI_TILE_MODE_ARRAY, NULL, > ws->info.si_tile_mode_array)) { > ws->info.si_tile_mode_array_valid = TRUE; > diff --git a/src/gallium/winsys/radeon/drm/radeon_winsys.h > b/src/gallium/winsys/radeon/drm/radeon_winsys.h > index 2d13550..6df1987 100644 > --- a/src/gallium/winsys/radeon/drm/radeon_winsys.h > +++ b/src/gallium/winsys/radeon/drm/radeon_winsys.h > @@ -198,6 +198,7 @@ struct radeon_info { > uint32_t gart_size; > uint32_t vram_size; > uint32_t max_sclk; > + uint32_t max_compute_units; > > uint32_t drm_major; /* version */ > uint32_t drm_minor; > -- > 2.0.0 > > _______________________________________________ > mesa-dev mailing list > mesa-dev@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/mesa-dev _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev