mirror of
https://gitlab.winehq.org/wine/vkd3d.git
synced 2024-11-21 16:46:41 -08:00
vkd3d-shader/hlsl: Write SM4 dcl_thread_group instructions.
This commit is contained in:
parent
718c79b823
commit
3857ca06fa
Notes:
Alexandre Julliard
2022-11-08 23:05:16 +01:00
Approved-by: Giovanni Mascellani (@giomasce) Approved-by: Francisco Casas (@fcasas) Approved-by: Henri Verbeet (@hverbeet) Approved-by: Alexandre Julliard (@julliard) Merge-Request: https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/43
@ -2587,13 +2587,6 @@ int hlsl_compile_shader(const struct vkd3d_shader_code *hlsl, const struct vkd3d
|
||||
return VKD3D_ERROR_INVALID_SHADER;
|
||||
}
|
||||
|
||||
if (profile->type == VKD3D_SHADER_TYPE_COMPUTE)
|
||||
{
|
||||
const struct vkd3d_shader_location loc = {.source_name = compile_info->source_name};
|
||||
|
||||
hlsl_fixme(&ctx, &loc, "Compute shader thread count.\n");
|
||||
}
|
||||
|
||||
ret = hlsl_emit_bytecode(&ctx, entry_func, compile_info->target_type, out);
|
||||
|
||||
hlsl_ctx_cleanup(&ctx);
|
||||
|
@ -833,7 +833,7 @@ struct sm4_instruction
|
||||
} srcs[4];
|
||||
unsigned int src_count;
|
||||
|
||||
uint32_t idx[2];
|
||||
uint32_t idx[3];
|
||||
unsigned int idx_count;
|
||||
};
|
||||
|
||||
@ -1278,6 +1278,19 @@ static void write_sm4_dcl_temps(struct vkd3d_bytecode_buffer *buffer, uint32_t t
|
||||
write_sm4_instruction(buffer, &instr);
|
||||
}
|
||||
|
||||
static void write_sm4_dcl_thread_group(struct vkd3d_bytecode_buffer *buffer, const uint32_t thread_count[3])
|
||||
{
|
||||
struct sm4_instruction instr =
|
||||
{
|
||||
.opcode = VKD3D_SM5_OP_DCL_THREAD_GROUP,
|
||||
|
||||
.idx = {thread_count[0], thread_count[1], thread_count[2]},
|
||||
.idx_count = 3,
|
||||
};
|
||||
|
||||
write_sm4_instruction(buffer, &instr);
|
||||
}
|
||||
|
||||
static void write_sm4_ret(struct vkd3d_bytecode_buffer *buffer)
|
||||
{
|
||||
struct sm4_instruction instr =
|
||||
@ -2370,6 +2383,9 @@ static void write_sm4_shdr(struct hlsl_ctx *ctx,
|
||||
write_sm4_dcl_semantic(ctx, &buffer, var);
|
||||
}
|
||||
|
||||
if (profile->type == VKD3D_SHADER_TYPE_COMPUTE)
|
||||
write_sm4_dcl_thread_group(&buffer, ctx->thread_count);
|
||||
|
||||
if (ctx->temp_count)
|
||||
write_sm4_dcl_temps(&buffer, ctx->temp_count);
|
||||
|
||||
|
@ -7,7 +7,7 @@ size (1, 1)
|
||||
|
||||
0.1
|
||||
|
||||
[compute shader todo]
|
||||
[compute shader]
|
||||
RWTexture2D<float> u;
|
||||
|
||||
[numthreads(1, 1, 1)]
|
||||
@ -17,5 +17,5 @@ void main()
|
||||
}
|
||||
|
||||
[test]
|
||||
todo dispatch 1 1 1
|
||||
todo probe uav 0 (0, 0) r (-123.0)
|
||||
dispatch 1 1 1
|
||||
probe uav 0 (0, 0) r (-123.0)
|
||||
|
@ -3,37 +3,37 @@
|
||||
[require]
|
||||
shader model >= 5.0
|
||||
|
||||
[compute shader todo]
|
||||
[compute shader]
|
||||
|
||||
[numthreads(1, 1, 1)]
|
||||
void main() {}
|
||||
|
||||
[compute shader fail todo]
|
||||
[compute shader fail]
|
||||
|
||||
[numthreads]
|
||||
void main() {}
|
||||
|
||||
[compute shader fail todo]
|
||||
[compute shader fail]
|
||||
|
||||
[numthreads(1, 1)]
|
||||
void main() {}
|
||||
|
||||
[compute shader fail todo]
|
||||
[compute shader fail]
|
||||
|
||||
[numthreads(1, 1, 1, 1)]
|
||||
void main() {}
|
||||
|
||||
[compute shader fail todo]
|
||||
[compute shader fail]
|
||||
|
||||
[numthreads(0, 1, 1)]
|
||||
void main() {}
|
||||
|
||||
[compute shader fail todo]
|
||||
[compute shader fail]
|
||||
|
||||
[numthreads(1, 0, 1)]
|
||||
void main() {}
|
||||
|
||||
[compute shader fail todo]
|
||||
[compute shader fail]
|
||||
|
||||
[numthreads(1, 1, 0)]
|
||||
void main() {}
|
||||
@ -68,12 +68,12 @@ void main() {}
|
||||
[numthreads(int(1), 1, 1)]
|
||||
void main() {}
|
||||
|
||||
[compute shader fail todo]
|
||||
[compute shader fail]
|
||||
|
||||
[numthreads(float(1), 1, 1)]
|
||||
void main() {}
|
||||
|
||||
[compute shader fail todo]
|
||||
[compute shader fail]
|
||||
|
||||
[numthreads(uint1(1), 1, 1)]
|
||||
void main() {}
|
||||
@ -99,30 +99,30 @@ static int x = 1;
|
||||
[numthreads(x, 1, 1)]
|
||||
void main() {}
|
||||
|
||||
[compute shader fail todo]
|
||||
[compute shader fail]
|
||||
|
||||
void main() {}
|
||||
|
||||
[compute shader fail todo]
|
||||
[compute shader fail]
|
||||
|
||||
[NumThreads(1, 1, 1)]
|
||||
void main() {}
|
||||
|
||||
[compute shader todo]
|
||||
[compute shader]
|
||||
|
||||
[numthreads(1, 1, 1)]
|
||||
void main();
|
||||
|
||||
void main() {}
|
||||
|
||||
[compute shader fail todo]
|
||||
[compute shader fail]
|
||||
|
||||
void main() {}
|
||||
|
||||
[numthreads(1, 1, 1)]
|
||||
void main();
|
||||
|
||||
[compute shader fail todo]
|
||||
[compute shader fail]
|
||||
|
||||
void main();
|
||||
|
||||
|
@ -13,7 +13,7 @@ size (1, 1)
|
||||
|
||||
0.5
|
||||
|
||||
[compute shader todo]
|
||||
[compute shader]
|
||||
RWTexture2D<float> u, v;
|
||||
[numthreads(1, 1, 1)]
|
||||
void main()
|
||||
@ -23,7 +23,7 @@ void main()
|
||||
}
|
||||
|
||||
[test]
|
||||
todo dispatch 1 1 1
|
||||
dispatch 1 1 1
|
||||
probe uav 0 (0, 0) r (0.6)
|
||||
probe uav 0 (1, 0) r (0.6)
|
||||
probe uav 0 (2, 0) r (0.6)
|
||||
|
Loading…
Reference in New Issue
Block a user