gallium: add PIPE_COMPUTE_CAP_MAX_VARIABLE_THREADS_PER_BLOCK
v3: - use a new case statement in r600_pipe_common.c - fix compilation of softpipe... Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com> Reviewed-by: Marek Olšák <marek.olsak@amd.com> Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
This commit is contained in:
@@ -498,6 +498,10 @@ pipe_screen::get_compute_param.
|
||||
threads. Also known as wavefront size, warp size or SIMD width.
|
||||
* ``PIPE_COMPUTE_CAP_ADDRESS_BITS``: The default compute device address space
|
||||
size specified as an unsigned integer value in bits.
|
||||
* ``PIPE_COMPUTE_CAP_MAX_VARIABLE_THREADS_PER_BLOCK``: Maximum variable number
|
||||
of threads that a single block can contain. This is similar to
|
||||
PIPE_COMPUTE_CAP_MAX_THREADS_PER_BLOCK, except that the variable size is not
|
||||
known a compile-time but at dispatch-time.
|
||||
|
||||
.. _pipe_bind:
|
||||
|
||||
|
@@ -303,6 +303,8 @@ ilo_get_compute_param(struct pipe_screen *screen,
|
||||
ptr = &val.subgroup_size;
|
||||
size = sizeof(val.subgroup_size);
|
||||
break;
|
||||
case PIPE_COMPUTE_CAP_MAX_VARIABLE_THREADS_PER_BLOCK:
|
||||
/* fallthrough */
|
||||
default:
|
||||
ptr = NULL;
|
||||
size = 0;
|
||||
|
@@ -418,6 +418,8 @@ nv50_screen_get_compute_param(struct pipe_screen *pscreen,
|
||||
RET((uint32_t []) { 512 }); /* FIXME: arbitrary limit */
|
||||
case PIPE_COMPUTE_CAP_ADDRESS_BITS:
|
||||
RET((uint32_t []) { 32 });
|
||||
case PIPE_COMPUTE_CAP_MAX_VARIABLE_THREADS_PER_BLOCK:
|
||||
RET((uint64_t []) { 0 });
|
||||
default:
|
||||
return 0;
|
||||
}
|
||||
|
@@ -478,6 +478,8 @@ nvc0_screen_get_compute_param(struct pipe_screen *pscreen,
|
||||
RET((uint32_t []) { 512 }); /* FIXME: arbitrary limit */
|
||||
case PIPE_COMPUTE_CAP_ADDRESS_BITS:
|
||||
RET((uint32_t []) { 64 });
|
||||
case PIPE_COMPUTE_CAP_MAX_VARIABLE_THREADS_PER_BLOCK:
|
||||
RET((uint64_t []) { 0 });
|
||||
default:
|
||||
return 0;
|
||||
}
|
||||
|
@@ -1036,6 +1036,8 @@ static int r600_get_compute_param(struct pipe_screen *screen,
|
||||
*subgroup_size = r600_wavefront_size(rscreen->family);
|
||||
}
|
||||
return sizeof(uint32_t);
|
||||
case PIPE_COMPUTE_CAP_MAX_VARIABLE_THREADS_PER_BLOCK:
|
||||
return 0;
|
||||
}
|
||||
|
||||
fprintf(stderr, "unknown PIPE_COMPUTE_CAP %d\n", param);
|
||||
|
@@ -522,6 +522,7 @@ softpipe_get_compute_param(struct pipe_screen *_screen,
|
||||
case PIPE_COMPUTE_CAP_IMAGES_SUPPORTED:
|
||||
case PIPE_COMPUTE_CAP_SUBGROUP_SIZE:
|
||||
case PIPE_COMPUTE_CAP_ADDRESS_BITS:
|
||||
case PIPE_COMPUTE_CAP_MAX_VARIABLE_THREADS_PER_BLOCK:
|
||||
break;
|
||||
}
|
||||
return 0;
|
||||
|
@@ -847,7 +847,8 @@ enum pipe_compute_cap
|
||||
PIPE_COMPUTE_CAP_MAX_CLOCK_FREQUENCY,
|
||||
PIPE_COMPUTE_CAP_MAX_COMPUTE_UNITS,
|
||||
PIPE_COMPUTE_CAP_IMAGES_SUPPORTED,
|
||||
PIPE_COMPUTE_CAP_SUBGROUP_SIZE
|
||||
PIPE_COMPUTE_CAP_SUBGROUP_SIZE,
|
||||
PIPE_COMPUTE_CAP_MAX_VARIABLE_THREADS_PER_BLOCK,
|
||||
};
|
||||
|
||||
/**
|
||||
|
Reference in New Issue
Block a user