From 0e3c30cd6f90db72044bb2d3311aa13a245cbcaf Mon Sep 17 00:00:00 2001 From: Tom Stellard Date: Fri, 21 Sep 2012 20:19:14 +0000 Subject: [PATCH] gallium: Add PIPE_COMPUTE_CAP_MAX_MEM_ALLOC_SIZE v2 v2: - Add comment in screen.rst - Report OpenCL required minimum for r600g --- src/gallium/docs/source/screen.rst | 2 ++ src/gallium/drivers/r600/r600_pipe.c | 16 ++++++++++++++++ src/gallium/include/pipe/p_defines.h | 3 ++- 3 files changed, 20 insertions(+), 1 deletion(-) diff --git a/src/gallium/docs/source/screen.rst b/src/gallium/docs/source/screen.rst index 540d30861b2..7a5568477f0 100644 --- a/src/gallium/docs/source/screen.rst +++ b/src/gallium/docs/source/screen.rst @@ -239,6 +239,8 @@ pipe_screen::get_compute_param. resource. Value type: ``uint64_t``. * ``PIPE_COMPUTE_CAP_MAX_INPUT_SIZE``: Maximum size of the INPUT resource. Value type: ``uint64_t``. +* ``PIPE_COMPUTE_CAP_MAX_MEM_ALLOC_SIZE``: Maximum size of a memory object + allocation in bytes. Value type: ``uint64_t``. .. _pipe_bind: diff --git a/src/gallium/drivers/r600/r600_pipe.c b/src/gallium/drivers/r600/r600_pipe.c index 77912326d0a..0a7b0ac2012 100644 --- a/src/gallium/drivers/r600/r600_pipe.c +++ b/src/gallium/drivers/r600/r600_pipe.c @@ -667,6 +667,22 @@ static int r600_get_compute_param(struct pipe_screen *screen, } return sizeof(uint64_t); + case PIPE_COMPUTE_CAP_MAX_MEM_ALLOC_SIZE: + 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. + */ + *max_mem_alloc_size = max_global_size / 4; + } + return sizeof(uint64_t); + default: fprintf(stderr, "unknown PIPE_COMPUTE_CAP %d\n", param); return 0; diff --git a/src/gallium/include/pipe/p_defines.h b/src/gallium/include/pipe/p_defines.h index 59c6382b25d..db864742d22 100644 --- a/src/gallium/include/pipe/p_defines.h +++ b/src/gallium/include/pipe/p_defines.h @@ -557,7 +557,8 @@ enum pipe_compute_cap PIPE_COMPUTE_CAP_MAX_GLOBAL_SIZE, PIPE_COMPUTE_CAP_MAX_LOCAL_SIZE, PIPE_COMPUTE_CAP_MAX_PRIVATE_SIZE, - PIPE_COMPUTE_CAP_MAX_INPUT_SIZE + PIPE_COMPUTE_CAP_MAX_INPUT_SIZE, + PIPE_COMPUTE_CAP_MAX_MEM_ALLOC_SIZE }; /** -- 2.30.2