shadertoy: assemble shadertoy.fs.asm from source
This commit is contained in:
parent
50c53376df
commit
6f5007525c
15
drm/length.fs.asm
Normal file
15
drm/length.fs.asm
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
src0.rgb = temp[0] :
|
||||||
|
temp[0].r = DP3 src0.rg0 src0.rg0 ;
|
||||||
|
|
||||||
|
src0.rgb = temp[0] :
|
||||||
|
temp[0].a = RSQ |src0.r| ;
|
||||||
|
|
||||||
|
OUT
|
||||||
|
src0.a = temp[0] :
|
||||||
|
RCP src0.a ,
|
||||||
|
out[0].r = SOP ;
|
||||||
|
|
||||||
|
OUT TEX_SEM_WAIT
|
||||||
|
:
|
||||||
|
out[0].a = MAX src0.1 src0.1 ,
|
||||||
|
out[0].gb = MAX src0.000 src0.000 ;
|
||||||
28
drm/length.fs.inc
Normal file
28
drm/length.fs.inc
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
0x00000800,
|
||||||
|
0x08020000,
|
||||||
|
0x08020080,
|
||||||
|
0x00840420,
|
||||||
|
0x00000000,
|
||||||
|
0x00000001,
|
||||||
|
|
||||||
|
0x00004000,
|
||||||
|
0x08020000,
|
||||||
|
0x08020080,
|
||||||
|
0x00000000,
|
||||||
|
0x0004000b,
|
||||||
|
0x00000000,
|
||||||
|
|
||||||
|
0x00008001,
|
||||||
|
0x08020080,
|
||||||
|
0x08020000,
|
||||||
|
0x00000000,
|
||||||
|
0x0000c00a,
|
||||||
|
0x0000000a,
|
||||||
|
|
||||||
|
0x00070005,
|
||||||
|
0x08020080,
|
||||||
|
0x08020080,
|
||||||
|
0x00920490,
|
||||||
|
0x00c18003,
|
||||||
|
0x00000005,
|
||||||
|
|
||||||
@ -244,9 +244,6 @@ int indirect_buffer()
|
|||||||
T0V(US_CONFIG
|
T0V(US_CONFIG
|
||||||
, US_CONFIG__ZERO_TIMES_ANYTHING_EQUALS_ZERO(1)
|
, US_CONFIG__ZERO_TIMES_ANYTHING_EQUALS_ZERO(1)
|
||||||
);
|
);
|
||||||
T0V(US_PIXSIZE
|
|
||||||
, US_PIXSIZE__PIX_SIZE(1)
|
|
||||||
);
|
|
||||||
T0V(US_FC_CTRL, 0);
|
T0V(US_FC_CTRL, 0);
|
||||||
|
|
||||||
T0V(FG_DEPTH_SRC, 0x00000000);
|
T0V(FG_DEPTH_SRC, 0x00000000);
|
||||||
@ -433,25 +430,31 @@ int indirect_buffer()
|
|||||||
// GA_US
|
// GA_US
|
||||||
//////////////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
const uint32_t fragment_shader[] = {
|
||||||
|
#include "shadertoy.fs.inc"
|
||||||
|
};
|
||||||
|
const int fragment_shader_length = (sizeof (fragment_shader)) / (sizeof (fragment_shader[0]));
|
||||||
|
assert(fragment_shader_length % 6 == 0);
|
||||||
|
printf("fs length %d\n", fragment_shader_length);
|
||||||
|
const int fragment_shader_instructions = fragment_shader_length / 6;
|
||||||
|
printf("fs instructions %d\n", fragment_shader_instructions);
|
||||||
|
|
||||||
|
T0V(US_PIXSIZE
|
||||||
|
, US_PIXSIZE__PIX_SIZE(1) // pixel shader stack frame size
|
||||||
|
);
|
||||||
|
|
||||||
T0V(US_CODE_RANGE
|
T0V(US_CODE_RANGE
|
||||||
, US_CODE_RANGE__CODE_ADDR(0)
|
, US_CODE_RANGE__CODE_ADDR(0)
|
||||||
| US_CODE_RANGE__CODE_SIZE(0)
|
| US_CODE_RANGE__CODE_SIZE(fragment_shader_instructions - 1)
|
||||||
);
|
);
|
||||||
T0V(US_CODE_OFFSET
|
T0V(US_CODE_OFFSET
|
||||||
, US_CODE_OFFSET__OFFSET_ADDR(0)
|
, US_CODE_OFFSET__OFFSET_ADDR(0)
|
||||||
);
|
);
|
||||||
T0V(US_CODE_ADDR
|
T0V(US_CODE_ADDR
|
||||||
, US_CODE_ADDR__START_ADDR(0)
|
, US_CODE_ADDR__START_ADDR(0)
|
||||||
| US_CODE_ADDR__END_ADDR(0)
|
| US_CODE_ADDR__END_ADDR(fragment_shader_instructions - 1)
|
||||||
);
|
);
|
||||||
|
|
||||||
const uint32_t fragment_shader[] = {
|
|
||||||
#include "../shader_examples/mesa/shadertoy.fs.txt"
|
|
||||||
};
|
|
||||||
const int fragment_shader_length = (sizeof (fragment_shader)) / (sizeof (fragment_shader[0]));
|
|
||||||
assert(fragment_shader_length % 6 == 0);
|
|
||||||
printf("fs length %d\n", fragment_shader_length);
|
|
||||||
|
|
||||||
T0V(GA_US_VECTOR_INDEX, 0x00000000);
|
T0V(GA_US_VECTOR_INDEX, 0x00000000);
|
||||||
T0_ONE_REG(GA_US_VECTOR_DATA, fragment_shader_length - 1);
|
T0_ONE_REG(GA_US_VECTOR_DATA, fragment_shader_length - 1);
|
||||||
for (int i = 0; i < fragment_shader_length; i++) {
|
for (int i = 0; i < fragment_shader_length; i++) {
|
||||||
|
|||||||
4
drm/shadertoy.fs.asm
Normal file
4
drm/shadertoy.fs.asm
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
OUT TEX_SEM_WAIT
|
||||||
|
src0.rgb = temp[0] :
|
||||||
|
out[0].a = MAX src0.1 src0.1 ,
|
||||||
|
out[0].rgb = MAX src0.rg0 src0.rg0 ;
|
||||||
7
drm/shadertoy.fs.inc
Normal file
7
drm/shadertoy.fs.inc
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
0x00078005,
|
||||||
|
0x08020000,
|
||||||
|
0x08020080,
|
||||||
|
0x00840420,
|
||||||
|
0x00c18003,
|
||||||
|
0x00000005,
|
||||||
|
|
||||||
@ -299,6 +299,7 @@ def disassemble_alu(code, is_output):
|
|||||||
rgb_swizzle_sel, rgb_sels = disassemble_rgb_swizzle_sel(code)
|
rgb_swizzle_sel, rgb_sels = disassemble_rgb_swizzle_sel(code)
|
||||||
#print(", ".join([*rgb_swizzle_sel, *a_swizzle_sel]))
|
#print(", ".join([*rgb_swizzle_sel, *a_swizzle_sel]))
|
||||||
|
|
||||||
|
type = US_CMN_INST.TYPE(code)
|
||||||
tex_sem_wait = US_CMN_INST.TEX_SEM_WAIT(code)
|
tex_sem_wait = US_CMN_INST.TEX_SEM_WAIT(code)
|
||||||
|
|
||||||
_, a_op, _ = US_ALU_ALPHA_INST._ALPHA_OP(code)
|
_, a_op, _ = US_ALU_ALPHA_INST._ALPHA_OP(code)
|
||||||
@ -309,8 +310,14 @@ def disassemble_alu(code, is_output):
|
|||||||
|
|
||||||
(a_out_str, a_temp_str), (rgb_out_str, rgb_temp_str) = disassemble_alu_dest(code)
|
(a_out_str, a_temp_str), (rgb_out_str, rgb_temp_str) = disassemble_alu_dest(code)
|
||||||
|
|
||||||
|
tags = []
|
||||||
|
assert type in {0, 1}, type
|
||||||
|
if type == 1:
|
||||||
|
tags.append("OUT")
|
||||||
if tex_sem_wait:
|
if tex_sem_wait:
|
||||||
print("TEX_SEM_WAIT")
|
tags.append("TEX_SEM_WAIT")
|
||||||
|
if tags:
|
||||||
|
print(" ".join(tags))
|
||||||
|
|
||||||
if not VERBOSE:
|
if not VERBOSE:
|
||||||
a_swizzle_sel = a_swizzle_sel[:a_op_operands]
|
a_swizzle_sel = a_swizzle_sel[:a_op_operands]
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user