d3d12: Enable compute

Reviewed-by: Sil Vilerino <sivileri@microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14367>
This commit is contained in:
Jesse Natalie 2021-12-22 16:06:25 -08:00 committed by Marge Bot
parent f399378c52
commit cc8219d1b4
3 changed files with 38 additions and 71 deletions

View file

@ -300,7 +300,6 @@ spec/!opengl 2.0/vertex-program-two-side/tcs-out, tes and fs: skip
spec/!opengl 2.0/vertex-program-two-side/tes-out and fs: skip
spec/!opengl 2.0/vertex-program-two-side/vs, tcs, tes and fs: skip
spec/!opengl 3.0/bound-resource-limits: fail
spec/!opengl 3.0/clearbuffer-depth-cs-probe: skip
spec/!opengl 3.0/required-sized-texture-formats: fail
spec/!opengl 3.1/default-vao: fail
spec/!opengl 3.1/genned-names: fail
@ -437,19 +436,7 @@ spec/arb_clear_texture/arb_clear_texture-texview: skip
spec/arb_clip_control/arb_clip_control-clip-control: skip
spec/arb_clip_control/arb_clip_control-depth-precision: skip
spec/arb_clip_control/arb_clip_control-viewport: skip
spec/arb_compute_shader/api_errors: skip
spec/arb_compute_shader/built-in constants: skip
spec/arb_compute_shader/compiler/work_group_size_too_large: skip
spec/arb_compute_shader/compute-and-render-bug-109630: skip
spec/arb_compute_shader/display-list: skip
spec/arb_compute_shader/indirect-compute: skip
spec/arb_compute_shader/local-id-explosion: skip
spec/arb_compute_shader/minmax: skip
spec/arb_compute_shader/render-and-compute: skip
spec/arb_compute_shader/zero-dispatch-size: skip
spec/arb_compute_variable_group_size/errors: skip
spec/arb_compute_variable_group_size/local-size: skip
spec/arb_compute_variable_group_size/minmax: skip
spec/arb_copy_image/arb_copy_image-api_errors: skip
spec/arb_copy_image/arb_copy_image-format-swizzle: skip
spec/arb_copy_image/arb_copy_image-formats: skip
@ -550,7 +537,6 @@ spec/arb_depth_buffer_float/depthstencil-render-miplevels 585 d=z32f_s8_s=z24_s8
spec/arb_depth_buffer_float/depthstencil-render-miplevels 585 d=z32f_s=z24_s8: skip
spec/arb_depth_buffer_float/depthstencil-render-miplevels 585 s=z24_s8_d=z32f: skip
spec/arb_depth_buffer_float/depthstencil-render-miplevels 585 s=z24_s8_d=z32f_s8: skip
spec/arb_direct_state_access/create-programpipelines/default compute shader program == 0: skip
spec/arb_direct_state_access/create-programpipelines/default tcs == 0: skip
spec/arb_direct_state_access/create-programpipelines/default tes == 0: skip
spec/arb_direct_state_access/create-transformfeedbacks: skip
@ -1862,19 +1848,13 @@ spec/arb_post_depth_coverage/arb_post_depth_coverage-multisampling: skip
spec/arb_post_depth_coverage/arb_post_depth_coverage-sample-shading: skip
spec/arb_program_interface_query/arb_program_interface_query-getprogramresourceindex/'vs_input2' on gl_program_input: fail
spec/arb_program_interface_query/arb_program_interface_query-getprogramresourceindex/'vs_input2[1][0]' on gl_program_input: fail
spec/arb_program_interface_query/arb_program_interface_query-getprogramresourceiv/compute on gl_compute_subroutine_uniform: skip
spec/arb_program_interface_query/arb_program_interface_query-getprogramresourceiv/tcs_patch on gl_program_output: skip
spec/arb_program_interface_query/arb_program_interface_query-getprogramresourceiv/tess_control on gl_tess_control_subroutine_uniform: skip
spec/arb_program_interface_query/arb_program_interface_query-resource-location/test_subroutine_stages_compute: skip
spec/arb_program_interface_query/arb_program_interface_query-resource-location/test_subroutine_stages_tcs_tes: skip
spec/arb_program_interface_query/arb_program_interface_query-resource-query/gl_compute_subroutine: skip
spec/arb_program_interface_query/arb_program_interface_query-resource-query/gl_compute_subroutine_uniform: skip
spec/arb_program_interface_query/arb_program_interface_query-resource-query/gl_program_input(cs): skip
spec/arb_program_interface_query/arb_program_interface_query-resource-query/gl_program_input(tcs): skip
spec/arb_program_interface_query/arb_program_interface_query-resource-query/gl_program_input(tcs,tes): skip
spec/arb_program_interface_query/arb_program_interface_query-resource-query/gl_program_input(tes): skip
spec/arb_program_interface_query/arb_program_interface_query-resource-query/gl_program_input(vs,tcs,tes): skip
spec/arb_program_interface_query/arb_program_interface_query-resource-query/gl_program_output(cs): skip
spec/arb_program_interface_query/arb_program_interface_query-resource-query/gl_program_output(tcs): skip
spec/arb_program_interface_query/arb_program_interface_query-resource-query/gl_program_output(tcs,tes): skip
spec/arb_program_interface_query/arb_program_interface_query-resource-query/gl_program_output(tcs,tes,gs): skip
@ -1883,9 +1863,7 @@ spec/arb_program_interface_query/arb_program_interface_query-resource-query/gl_t
spec/arb_program_interface_query/arb_program_interface_query-resource-query/gl_tess_control_subroutine_uniform: skip
spec/arb_program_interface_query/arb_program_interface_query-resource-query/gl_tess_evaluation_subroutine: skip
spec/arb_program_interface_query/arb_program_interface_query-resource-query/gl_tess_evaluation_subroutine_uniform: skip
spec/arb_program_interface_query/arb_program_interface_query-resource-query/gl_uniform(cs): skip
spec/arb_program_interface_query/arb_program_interface_query-resource-query/gl_uniform(tes,tcs): skip
spec/arb_program_interface_query/arb_program_interface_query-resource-query/gl_uniform_block(cs): skip
spec/arb_program_interface_query/arb_program_interface_query-resource-query/gl_uniform_block(tcs,tes): skip
spec/arb_query_buffer_object/coherency: skip
spec/arb_query_buffer_object/qbo: skip
@ -4330,10 +4308,10 @@ wgl/wgl-sanity: skip
summary:
name: results
---- --------
pass: 15927
pass: 15979
fail: 1200
crash: 68
skip: 3041
skip: 3019
timeout: 0
warn: 10
incomplete: 0
@ -4342,4 +4320,4 @@ summary:
changes: 0
fixes: 0
regressions: 0
total: 20256
total: 20286

View file

@ -124,47 +124,7 @@ spec/arb_bindless_texture/linker/global_bindless_sampler_and_bindless_image: ski
spec/arb_bindless_texture/linker/global_bindless_sampler_and_bound_image: skip
spec/arb_bindless_texture/linker/global_bindless_sampler_and_bound_sampler: skip
spec/arb_bindless_texture/linker/global_bound_sampler_and_bound_image: skip
spec/arb_compute_shader/execution/atomic-counter: skip
spec/arb_compute_shader/execution/basic-global-id: skip
spec/arb_compute_shader/execution/basic-group-id: skip
spec/arb_compute_shader/execution/basic-group-id-x: skip
spec/arb_compute_shader/execution/basic-group-id-y: skip
spec/arb_compute_shader/execution/basic-group-id-z: skip
spec/arb_compute_shader/execution/basic-local-id-atomic: skip
spec/arb_compute_shader/execution/basic-local-index: skip
spec/arb_compute_shader/execution/basic-ssbo: skip
spec/arb_compute_shader/execution/basic-texelfetch: skip
spec/arb_compute_shader/execution/basic-uniform-access: skip
spec/arb_compute_shader/execution/basic-uniform-access-atomic: skip
spec/arb_compute_shader/execution/border-color: skip
spec/arb_compute_shader/execution/min-dvec4-double-large-group-size: skip
spec/arb_compute_shader/execution/multiple-texture-reading: skip
spec/arb_compute_shader/execution/multiple-workgroups: skip
spec/arb_compute_shader/execution/separate-global-id: skip
spec/arb_compute_shader/execution/separate-global-id-2: skip
spec/arb_compute_shader/execution/shared-atomicadd-int: skip
spec/arb_compute_shader/execution/shared-atomiccompswap-int: skip
spec/arb_compute_shader/execution/shared-atomicexchange-int: skip
spec/arb_compute_shader/execution/shared-atomicmax-int: skip
spec/arb_compute_shader/execution/shared-atomicmax-uint: skip
spec/arb_compute_shader/execution/shared-atomicmin-int: skip
spec/arb_compute_shader/execution/shared-atomicmin-uint: skip
spec/arb_compute_shader/execution/shared-atomics: skip
spec/arb_compute_shader/execution/simple-barrier: skip
spec/arb_compute_shader/execution/simple-barrier-atomics: skip
spec/arb_compute_shader/linker/bug-93840: skip
spec/arb_compute_shader/linker/matched_local_work_sizes: skip
spec/arb_compute_shader/linker/mismatched_local_work_sizes: skip
spec/arb_compute_shader/linker/mix_compute_and_non_compute: skip
spec/arb_compute_shader/linker/no_local_work_size: skip
spec/arb_compute_shader/linker/one_local_work_size: skip
spec/arb_compute_variable_group_size/execution/basic-local-size: skip
spec/arb_compute_variable_group_size/execution/fixed-local-size: skip
spec/arb_compute_variable_group_size/execution/global-invocation-id: skip
spec/arb_compute_variable_group_size/execution/separate-global-id: skip
spec/arb_compute_variable_group_size/execution/separate-global-id-2: skip
spec/arb_compute_variable_group_size/linker/mixed_fixed_variable_local_work_size: skip
spec/arb_compute_variable_group_size/linker/no_local_size_specified: skip
spec/arb_cull_distance/basic-cull-1: skip
spec/arb_cull_distance/basic-cull-2: skip
spec/arb_cull_distance/basic-cull-3: skip
@ -7741,7 +7701,6 @@ spec/glsl-1.50/execution/geometry/max-input-components: crash
spec/glsl-1.50/execution/geometry/primitive-id-out: fail
spec/glsl-1.50/execution/geometry/vs-gs-max-in-out-components: crash
spec/glsl-1.50/execution/gs-also-uses-smooth-flat-noperspective: fail
spec/glsl-1.50/execution/out-of-ssa-dfs-pre-order: skip
spec/glsl-1.50/execution/primitive-id-no-gs: fail
spec/glsl-1.50/execution/primitive-id-no-gs-instanced: fail
spec/glsl-1.50/execution/primitive-id-no-gs-line: fail
@ -13027,10 +12986,10 @@ spec/oes_viewport_array/viewport-gs-writes-out-of-range: skip
summary:
name: results
---- --------
pass: 7218
pass: 7259
fail: 58
crash: 23
skip: 12920
skip: 12879
timeout: 0
warn: 25
incomplete: 0

View file

@ -187,10 +187,8 @@ d3d12_get_param(struct pipe_screen *pscreen, enum pipe_cap param)
case PIPE_CAP_GLSL_FEATURE_LEVEL_COMPATIBILITY:
return 330;
#if 0 /* TODO: Enable me */
case PIPE_CAP_COMPUTE:
return 0;
#endif
return 1;
case PIPE_CAP_TEXTURE_MULTISAMPLE:
return 1;
@ -468,6 +466,37 @@ d3d12_get_shader_param(struct pipe_screen *pscreen,
}
}
static int
d3d12_get_compute_param(struct pipe_screen *pscreen,
enum pipe_shader_ir ir,
enum pipe_compute_cap cap,
void *ret)
{
switch (cap) {
case PIPE_COMPUTE_CAP_MAX_GRID_SIZE: {
uint64_t *grid = (uint64_t *)ret;
grid[0] = grid[1] = grid[2] = D3D12_CS_DISPATCH_MAX_THREAD_GROUPS_PER_DIMENSION;
return sizeof(uint64_t) * 3;
}
case PIPE_COMPUTE_CAP_MAX_BLOCK_SIZE: {
uint64_t *block = (uint64_t *)ret;
block[0] = D3D12_CS_THREAD_GROUP_MAX_X;
block[1] = D3D12_CS_THREAD_GROUP_MAX_Y;
block[2] = D3D12_CS_THREAD_GROUP_MAX_Z;
return sizeof(uint64_t) * 3;
}
case PIPE_COMPUTE_CAP_MAX_VARIABLE_THREADS_PER_BLOCK:
case PIPE_COMPUTE_CAP_MAX_THREADS_PER_BLOCK:
*(uint64_t *)ret = D3D12_CS_THREAD_GROUP_MAX_THREADS_PER_GROUP;
return sizeof(uint64_t);
case PIPE_COMPUTE_CAP_MAX_LOCAL_SIZE:
*(uint64_t *)ret = D3D12_CS_TGSM_REGISTER_COUNT /*DWORDs*/ * 4;
return sizeof(uint64_t);
default:
return 0;
}
}
static bool
d3d12_is_format_supported(struct pipe_screen *pscreen,
enum pipe_format format,
@ -992,6 +1021,7 @@ d3d12_init_screen(struct d3d12_screen *screen, struct sw_winsys *winsys, IUnknow
screen->base.get_param = d3d12_get_param;
screen->base.get_paramf = d3d12_get_paramf;
screen->base.get_shader_param = d3d12_get_shader_param;
screen->base.get_compute_param = d3d12_get_compute_param;
screen->base.is_format_supported = d3d12_is_format_supported;
screen->base.get_compiler_options = d3d12_get_compiler_options;
screen->base.context_create = d3d12_context_create;