mirror of
https://gitlab.winehq.org/wine/vkd3d.git
synced 2025-09-12 18:50:22 -07:00
vkd3d-shader/d3dbc: Lower TEXCRD.
This commit is contained in:
committed by
Henri Verbeet
parent
731b94f6f9
commit
f9bb84e5ef
Notes:
Henri Verbeet
2025-08-07 20:51:20 +02:00
Approved-by: Henri Verbeet (@hverbeet) Merge-Request: https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/1670
@@ -1387,6 +1387,23 @@ static enum vkd3d_result vsir_program_lower_sm4_sincos(struct vsir_program *prog
|
||||
return VKD3D_OK;
|
||||
}
|
||||
|
||||
static enum vkd3d_result vsir_program_lower_texcrd(struct vsir_program *program,
|
||||
struct vkd3d_shader_instruction *ins, struct vkd3d_shader_message_context *message_context)
|
||||
{
|
||||
/* texcrd DST, t# -> mov DST, t# */
|
||||
|
||||
if (ins->src[0].modifiers)
|
||||
{
|
||||
vkd3d_shader_error(message_context, &ins->location, VKD3D_SHADER_ERROR_VSIR_NOT_IMPLEMENTED,
|
||||
"Aborting due to not yet implemented feature: texcrd source modifier.");
|
||||
return VKD3D_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
ins->opcode = VSIR_OP_MOV;
|
||||
|
||||
return VKD3D_OK;
|
||||
}
|
||||
|
||||
static enum vkd3d_result vsir_program_lower_texld_sm1(struct vsir_program *program,
|
||||
struct vkd3d_shader_instruction *ins, struct vkd3d_shader_message_context *message_context)
|
||||
{
|
||||
@@ -1649,6 +1666,10 @@ static enum vkd3d_result vsir_program_lower_d3dbc_instructions(struct vsir_progr
|
||||
|
||||
switch (ins->opcode)
|
||||
{
|
||||
case VSIR_OP_TEXCRD:
|
||||
ret = vsir_program_lower_texcrd(program, ins, message_context);
|
||||
break;
|
||||
|
||||
case VSIR_OP_TEXLD:
|
||||
if (program->shader_version.major == 1)
|
||||
ret = vsir_program_lower_texld_sm1(program, ins, message_context);
|
||||
@@ -1766,7 +1787,6 @@ static enum vkd3d_result vsir_program_lower_instructions(struct vsir_program *pr
|
||||
case VSIR_OP_TEXBEM:
|
||||
case VSIR_OP_TEXBEML:
|
||||
case VSIR_OP_TEXCOORD:
|
||||
case VSIR_OP_TEXCRD:
|
||||
case VSIR_OP_TEXDEPTH:
|
||||
case VSIR_OP_TEXDP3:
|
||||
case VSIR_OP_TEXDP3TEX:
|
||||
|
@@ -28,3 +28,25 @@ probe (320, 240) f32(1, 1, 1, 0)
|
||||
probe (480, 240) f32(1, 0, 1, 0)
|
||||
probe (320, 360) f32(1, 1, 0, 0)
|
||||
probe (480, 360) f32(1, 0, 0, 0)
|
||||
|
||||
[vertex shader]
|
||||
void main(inout float4 pos : position, out float4 tex : texcoord)
|
||||
{
|
||||
tex = pos;
|
||||
}
|
||||
|
||||
[pixel shader d3dbc-hex]
|
||||
% TODO: Convert to assembly or HLSL.
|
||||
ffff0104 % ps_1_4
|
||||
00000051 a00f0000 3e4ccccd 3e4ccccd 3e4ccccd 3e4ccccd % def c0, 0.2, 0.2, 0.2, 0.2
|
||||
00000040 80070000 b0e40000 % texcrd r0.xyz, t0
|
||||
00000001 80080000 a0e40000 % mov r0.w, c0
|
||||
00000002 800f0000 80e40000 a0e40000 % add r0, r0, c0
|
||||
0000ffff % end
|
||||
|
||||
[test]
|
||||
draw quad
|
||||
probe (160, 120) f32(0.0, 0.7, 0.2, 0.4) 32
|
||||
probe (480, 120) f32(0.7, 0.7, 0.2, 0.4) 32
|
||||
probe (160, 360) f32(0.0, 0.0, 0.2, 0.4) 8
|
||||
probe (480, 360) f32(0.7, 0.0, 0.2, 0.4) 8
|
||||
|
Reference in New Issue
Block a user