This is mainly to accomodate AMD's LLVM compiler back-end by letting it bypass the TGSI representation. Other drivers will keep using the common TGSI instruction set for compute shaders. --- src/gallium/docs/source/screen.rst | 5 +++++ src/gallium/include/pipe/p_defines.h | 1 + src/gallium/include/pipe/p_state.h | 2 +- 3 files changed, 7 insertions(+), 1 deletion(-)
diff --git a/src/gallium/docs/source/screen.rst b/src/gallium/docs/source/screen.rst index 622731f..0bce307 100644 --- a/src/gallium/docs/source/screen.rst +++ b/src/gallium/docs/source/screen.rst @@ -183,6 +183,11 @@ PIPE_COMPUTE_CAP_* Compute-specific capabilities. They can be queried using pipe_screen::get_compute_param. +* ``PIPE_COMPUTE_CAP_IR_TARGET``: Desired representation of the + compute program. Its value should be a target triple specification + of the form ``processor-manufacturer-os`` that will be passed on to + the compiler, or ``tgsi`` if the driver accepts compute programs in + the common TGSI representation. Value type: null-terminated string. * ``PIPE_COMPUTE_CAP_GRID_DIMENSION``: Number of supported dimensions for grid and block coordinates. Value type: ``uint64_t``. * ``PIPE_COMPUTE_CAP_MAX_GRID_SIZE``: Maximum grid size in block diff --git a/src/gallium/include/pipe/p_defines.h b/src/gallium/include/pipe/p_defines.h index ec708b7..89e247e 100644 --- a/src/gallium/include/pipe/p_defines.h +++ b/src/gallium/include/pipe/p_defines.h @@ -529,6 +529,7 @@ enum pipe_shader_cap */ enum pipe_compute_cap { + PIPE_COMPUTE_CAP_IR_TARGET, PIPE_COMPUTE_CAP_GRID_DIMENSION, PIPE_COMPUTE_CAP_MAX_GRID_SIZE, PIPE_COMPUTE_CAP_MAX_BLOCK_SIZE, diff --git a/src/gallium/include/pipe/p_state.h b/src/gallium/include/pipe/p_state.h index 8b6dc7e..bffe46f 100644 --- a/src/gallium/include/pipe/p_state.h +++ b/src/gallium/include/pipe/p_state.h @@ -580,7 +580,7 @@ struct pipe_resolve_info struct pipe_compute_state { - const struct tgsi_token *tokens; /**< Compute program to be executed. */ + const void *prog; /**< Compute program to be executed. */ unsigned req_local_mem; /**< Required size of the LOCAL resource. */ unsigned req_private_mem; /**< Required size of the PRIVATE resource. */ unsigned req_input_mem; /**< Required size of the INPUT resource. */ -- 1.7.9.2 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev