isle-portable/miniwin/src/d3drm/backends/gxm/shaders/main.texture.frag.perf.txt
olebeck 47736862a7
Add PSVita port (#541)
* add psvita to cmake

* no PIE for vita

* add modules to vpk

* use custom pvr apphint

* select correct renderer for sdl renderer

* patch sdl3 shaders, got something on screen!

* use proper cmake patch for sdl

* add missing module

* remove test window which causes a bug in the vita sdl port to show up

* add gxm renderer (not working with display yet)

* avoid sdl renderer for vita, seems broken

* make gxm renderer work with new d3drm

* fix rendering somewhat, some geometry shows up

* support paletted textures directly to avoid copying the texture twice

* fix Draw2DImage

* make 3d work, broken lights

* clean up a bit

* fix normals matrix

* remove some unneeded changes

* forgot env var

* wrong env dest

* run clang format

* correct texture address mode, use tlsf instead of sceClibMspace

* double buffered uniforms seem to work now

* missed a line

* update GXMRenderer_EnumDevice

* hopefully actually fix uniform buffers

* run clang-format

* remove a change thats not needed

* improve fragment shader performance

* add vita to dist folder

* add base for vita config app

* add config self to vpk

* transform touch events to virtual size

* add livearea graphics

* Update cmake file to include livearea assets

* put manual in the right place

* add sample rco

* add messagebox on vita

* triple buffer textures because fences arent a thing on vita and making draw&cpu sync would be too slow

* make config app not crash on launch

* change defaults

* update gxm renderer with interface changes

* split 2d and 3d shaders completely

* update gxm renderer

* fix transition on gxm

* clang format

* move config cmake

* move CONFIG_vita

* always clear before drawing 2d image

* hopefully fix windows build

* clang-format fix broken includes

* order again

* undo moving qt cmake to its own list

* move uic search path

* use ifdefs for all d3drm backends, cpack to generate vpk

* cmake wrong escape

* small cleanups in gxm renderer

* defer texture delete to avoid overwriting the texture during a frame

* clang-format

* more of the layout for config

* remove top buttons

* use SceAppSettings instead of custom ui

* use select for back to info center on vita, to make screenshots possible again

* remove accidentally left in add_subdirectory

* adjust diskpath to be like other ports

* use vita_create_vpk and not cpack

* gxm: msaa support, fix wrong file path

* gxm: add mipmaps (disabled)

* clang-format

* fix open isle.ini with fopen

* add missing strings

* use iniparser_set not dictionary_set

* add default save path to config

* load config app after initializing ini on vita

* fix config build

* change the default disk & cd path, update the paf library

* update paf library headers

* include orders for clang-format

* clean up

* make shader compiler not required

* move asm language

* warn instead of error when shader source is changed when no compiler is found

---------

Co-authored-by: Li <li@silica.codes>
Co-authored-by: Christian Semmler <mail@csemmler.com>
2025-10-31 23:23:12 +00:00

140 lines
7.0 KiB
Plaintext

Total estimated cost: 64.5 cycles, parallel mode
Register count: 12 PAs, 16 temps, 38 SAs *
Texture reads: 1 non-dependent, dependent: 0 unconditional, 0 conditional
High level analysis:
No warnings.
* Please refer to the Razor documentation for details regarding the meaning of these numbers. Decreasing the number of registers used will not necessarily increase performance
Instruction statistics:
Number of alu ops: 64
Number of mem ops: 0
Number of tex ops: 0
Number of floating point ops: 44
Number of integer ops: 1
Number of pack ops: 1
Number of mov ops: 15
Number of nop ops: 2
Constants:
[DEFAULT + 0 ] sa0 = (float1) uShininess
[DEFAULT + 2 ] sa2 = (float4) uColor
[BUFFER0 + 0 ] = (float4) uLights[0].color
[BUFFER0 + 4 ] = (float4) uLights[0].vec
[BUFFER0 + 8 ] = (float1) uLights[0].isDirectional
[BUFFER0 + 10 ] = (float4) uLights[1].color
[BUFFER0 + 14 ] = (float4) uLights[1].vec
[BUFFER0 + 18 ] = (float1) uLights[1].isDirectional
[BUFFER0 + 20 ] = (float3) uAmbientLight
[LITERAL + 1 ] sa7 = 0xffffffff (-1.#QNAN0f) (-1.#QNANh, -1.#QNANh)
[LITERAL + 2 ] sa8 = 0x3f800000 (1.000000f) (0.00000h, 1.87500h)
[BUFFER0 ] sa6 = buffer base address
Samplers:
TEXUNIT0 = uTexture
Iterators:
pa0 = (float4) TEXCOORD1
pa8 = (float4) TEXCOORD2
Secondary program:
0 : lda32 sa1, [sa6, 0x9]
1 : lda32.fetch3 sa9, [sa6, 0x4]
2 : mul.f32 sa32.xy, -sa8.yz, sa0.yy
3 : mul.f32 sa34.x, -sa10.y, sa0.y
4 : lda32.fetch4 sa12, [sa6, 0x0]
5 : mov.f32 sa36.xy, {0, 0}
6 : mov.f32 sa30.x, {0}
7 : lda32 sa15, [sa6, 0x13]
8 : lda32.fetch3 sa16, [sa6, 0xe]
9 : mul.f32 sa26.xy, -sa16.xy, sa14.yy
10: mul.f32 sa28.x, -sa18.x, sa14.y
11: lda32.fetch4 sa19, [sa6, 0xa]
12: lda32.fetch3 sa22, [sa6, 0x14]
13: nop
Primary program:
pa4 = tex2D<float4>(uTexture, TEXCOORD0.xy)
0 : cmp.gt.f32 p0, sa0.x, {0}
1 : mov.f32 i0.xyz, pa0.xyz
2 : add.f32 i1.xyz, sa8.yzw, -i0.xyz
2 : +dot.f32 pa3.x, i0.xyz, i0.xyz
3 : mov.f32 i2.xyz, sa32.xyz
4 : mad.f32 i2.xyz, -sa0.yyy, i1.xyz, i2.xyz
5 : add.f32 i1.xyz, i2.xyz, i1.xyz
5 : +rsq.f32 pa3.x, pa3.x
6 : dot.f32 i2.x, i1.xyz, i1.xyz
7 : rsq.f32 pa3.x, i2.x
7 : +mul.f32 i0.xyz, -i0.xyz, pa2.yyy
8 : mad.f32 i2.xyz, pa2.yyy, i1.xyz, i0.xyz
8 : +mov.f32 r6.xy, i0.xy
9 : mov.f32 r8.x, i0.z
10: dot.f32 i0.x, i2.xyz, i2.xyz
10: +mov.f32 r2.xy, i2.xy
11: mov.f32 r4.x, i2.z
12: rsq.f32 pa3.x, i0.x
12: +mul.f32 i0.xyz, i1.xyz, pa2.yyy
13: dot.f32 i0.x, pa8.xyz, i0.xyz
14: max.f32 r14.x, i0.x, {0}
15: p0 br #19
16: mov.f32 r10.xy, sa36.xy
17: or.u32 r12.x, sa30.x, 0x0
18: br #30
#19: cmov.lezero.f32 r0.x, r14.x, {0}, sa8.x
20: cmov.ltzero.f32 i0.x, r14.x, sa8.x, {0}
21: mad.f32 i0.x, r0.x, {1}, -i0.x
22: mul.f32 i1.xyz, r2.xyz, pa2.yyy
23: dot.f32 i1.x, pa8.xyz, i1.xyz
24: max.f32 i1.x, i1.x, {0}
25: mul.f32 i0.xyz, sa12.xyz, i0.xxx
25: +log.f32 pa3.x, i1.x
26: mul.f32 i1.x, sa0.x, pa2.y
27: exp.f32 i1.x, i1.x
28: mad.f32 r10.xy, i0.xy, i1.xx, {0, 0}
29: mul.f32 r12.x, i0.z, i1.x
#30: nop
31: mov.f32 i0.xyz, sa16.xyz
32: mad.f32 i0.xyz, -pa0.xyz, {1, 1, 1}, i0.xyz
33: mov.f32 i1.xyz, sa26.xyz
34: mad.f32 i1.xyz, -sa14.yyy, i0.xyz, i1.xyz
35: add.f32 i0.xyz, i1.xyz, i0.xyz
35: +mov.f32 i2.xyz, r6.xyz
36: dot.f32 i1.x, i0.xyz, i0.xyz
37: rsq.f32 i1.x, i1.x
38: mad.f32 i2.xyz, i1.xxx, i0.xyz, i2.xyz
39: mul.f32 i0.xyz, i0.xyz, i1.xxx
39: +mov.f32 r0.xy, i2.xy
40: dot.f32 i0.x, pa8.xyz, i0.xyz
41: max.f32 pa2.x, i0.x, {0}
42: dot.f32 i0.x, i2.xyz, i2.xyz
43: mov.f32 r2.x, i2.z
44: rsq.f32 pa0.-y, i0.x
45: !p0 br #57
46: cmov.lezero.f32 pa0.x, pa2.x, {0}, sa8.x
47: cmov.ltzero.f32 i0.x, pa2.x, sa8.x, {0}
48: mad.f32 i0.x, pa0.x, {1}, -i0.x
49: mul.f32 i1.xyz, r0.xyz, pa0.yyy
50: dot.f32 i1.x, pa8.xyz, i1.xyz
51: max.f32 i1.x, i1.x, {0}
52: mul.f32 i0.xyz, sa18.yzw, i0.xxx
52: +log.f32 pa0.x, i1.x
53: mul.f32 i1.x, sa0.x, pa0.x
54: exp.f32 i1.x, i1.x
55: mad.f32 r10.xy, i0.xy, i1.xx, r10.xy
56: mad.f32 r12.x, i0.z, i1.x, r12.x
#57: nop
58: mad.f32 i0.xy, r14.xx, sa12.xy, sa22.xy
59: mad.f32 i0.--z, r14.--x, sa14.--x, sa24.--x
60: mov.f32 i1.xyz, sa18.yzw
61: mad.f32 i0.xyz, pa2.xxx, i1.xyz, i0.xyz
62: mov.f32 i1.xyz, r10.xyz
63: mov.f32 i2.xyzw, sa2.xyzw
64: mad.f32 i0.xyz, i2.xyz, i0.xyz, i1.xyz
65: min.f32 i0.xyz, i0.xyz, {1, 1, 1}
66: max.f32 i0.xyz, i0.xyz, {0, 0, 0}
67: mad.f32 i2.xyz, pa4.xyz, i0.xyz, {0, 0, 0}
68: pack.f16.f32 pa0.xyzw, i2.xyzw