On 08/08/14 15:16, Tom Stellard wrote: > There is a hard limit in older kernels of 256 MB for buffer allocations, > so report this value as MAX_MEM_ALLOC_SIZE and adjust MAX_GLOBAL_SIZE > to statisfy requirements of OpenCL. > Hi Tom,
Following Dave's report I've gone through the series and pulled out (rejected) patches 2, 5 and 6. The rest of the series is still queued for 10.2 yet I would prefer if someone can give them a spin. Thanks Emil > CC: "10.2" <mesa-sta...@lists.freedesktop.org> > --- > src/gallium/drivers/radeon/r600_pipe_common.c | 32 > ++++++++++++++++----------- > 1 file changed, 19 insertions(+), 13 deletions(-) > > diff --git a/src/gallium/drivers/radeon/r600_pipe_common.c > b/src/gallium/drivers/radeon/r600_pipe_common.c > index 3476021..0886b02 100644 > --- a/src/gallium/drivers/radeon/r600_pipe_common.c > +++ b/src/gallium/drivers/radeon/r600_pipe_common.c > @@ -474,13 +474,21 @@ static int r600_get_compute_param(struct pipe_screen > *screen, > case PIPE_COMPUTE_CAP_MAX_GLOBAL_SIZE: > if (ret) { > uint64_t *max_global_size = ret; > - /* XXX: This is what the proprietary driver reports, we > - * may want to use a different value. */ > - /* XXX: Not sure what to put here for SI. */ > - if (rscreen->chip_class >= SI) > - *max_global_size = 2000000000; > - else > - *max_global_size = 201326592; > + uint64_t max_mem_alloc_size; > + > + r600_get_compute_param(screen, > + PIPE_COMPUTE_CAP_MAX_MEM_ALLOC_SIZE, > + &max_mem_alloc_size); > + > + /* In OpenCL, the MAX_MEM_ALLOC_SIZE must be at least > + * 1/4 of the MAX_GLOBAL_SIZE. Since the > + * MAX_MEM_ALLOC_SIZE is fixed for older kernels, > + * make sure we never report more than > + * 4 * MAX_MEM_ALLOC_SIZE. > + */ > + *max_global_size = MIN2(4 * max_mem_alloc_size, > + rscreen->info.gart_size + > + rscreen->info.vram_size); > } > return sizeof(uint64_t); > > @@ -504,13 +512,11 @@ static int r600_get_compute_param(struct pipe_screen > *screen, > if (ret) { > uint64_t max_global_size; > uint64_t *max_mem_alloc_size = ret; > - r600_get_compute_param(screen, > PIPE_COMPUTE_CAP_MAX_GLOBAL_SIZE, &max_global_size); > - /* OpenCL requres this value be at least > - * max(MAX_GLOBAL_SIZE / 4, 128 * 1024 *1024) > - * I'm really not sure what value to report here, but > - * MAX_GLOBAL_SIZE / 4 seems resonable. > + > + /* XXX: The limit in older kernels is 256 MB. We > + * should add a query here for newer kernels. > */ > - *max_mem_alloc_size = max_global_size / 4; > + *max_mem_alloc_size = 256 * 1024 * 1024; > } > return sizeof(uint64_t); > > _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev