port from perforce
This commit is contained in:
296
hgplus/las/framework-dx11-nasm/b288.asm
Normal file
296
hgplus/las/framework-dx11-nasm/b288.asm
Normal file
@@ -0,0 +1,296 @@
|
||||
; b288.asm - las/mercury
|
||||
[BITS 32]
|
||||
;---
|
||||
%define WIDTH 1280
|
||||
%define HEIGHT 720
|
||||
%ifdef DEBUG
|
||||
%else
|
||||
%define FULLSCREEN
|
||||
%endif
|
||||
;---
|
||||
%include "inc/macros.inc"
|
||||
%include "inc/windows.inc"
|
||||
%include "inc/dxgi.inc"
|
||||
%include "inc/d3d11.inc"
|
||||
;---
|
||||
struc TEXTURE_2D_SRV_UAV_RTV
|
||||
.TEX: resd 1
|
||||
.SRV: resd 1
|
||||
.UAV: resd 1
|
||||
.RTV: resd 1
|
||||
endstruc
|
||||
;---
|
||||
DATA_SECTION WFMTEX
|
||||
_waveFormatEx:
|
||||
istruc WAVEFORMATEX
|
||||
at WAVEFORMATEX.wFormatTag, dw WAVE_FORMAT_IEEE_FLOAT
|
||||
at WAVEFORMATEX.nChannels, dw 2
|
||||
at WAVEFORMATEX.nSamplesPerSec, dd 44100
|
||||
at WAVEFORMATEX.nAvgBytesPerSec, dd 44100*4*2
|
||||
at WAVEFORMATEX.nBlockAlign, dw 4*2
|
||||
at WAVEFORMATEX.wBitsPerSample, dw 4*8
|
||||
at WAVEFORMATEX.cbSize, dw 0
|
||||
iend
|
||||
|
||||
DATA_SECTION WHDR
|
||||
_waveHdr:
|
||||
istruc WAVEHDR
|
||||
at WAVEHDR.lpData, dd _sndBuffer
|
||||
at WAVEHDR.dwBufferLength, dd _sndBufferEnd-_sndBuffer
|
||||
at WAVEHDR.dwBytesRecorded, dd 0
|
||||
at WAVEHDR.dwUser, dd 0
|
||||
at WAVEHDR.dwFlags, dd WHDR_PREPARED
|
||||
at WAVEHDR.dwLoops, dd 0
|
||||
at WAVEHDR.lpNext, dd 0
|
||||
at WAVEHDR.reserved, dd 0
|
||||
iend
|
||||
|
||||
DATA_SECTION TIME
|
||||
_mmTime:
|
||||
istruc MMTIME
|
||||
at MMTIME.wType, dd TIME_SAMPLES
|
||||
at MMTIME.data, dd 0
|
||||
iend
|
||||
|
||||
DATA_SECTION SC_DESC
|
||||
_swapChainDesc:
|
||||
istruc DXGI_SWAP_CHAIN_DESC
|
||||
at DXGI_SWAP_CHAIN_DESC.Width, dd WIDTH
|
||||
at DXGI_SWAP_CHAIN_DESC.Height, dd HEIGHT
|
||||
at DXGI_SWAP_CHAIN_DESC.Numerator, dd 0
|
||||
at DXGI_SWAP_CHAIN_DESC.Denominator, dd 1
|
||||
at DXGI_SWAP_CHAIN_DESC.Format, dd DXGI_FORMAT_R16G16B16A16_FLOAT
|
||||
at DXGI_SWAP_CHAIN_DESC.ScanlineOrdering, dd DXGI_MODE_SCANLINE_ORDER_UNSPECIFIED
|
||||
at DXGI_SWAP_CHAIN_DESC.Scaling, dd DXGI_MODE_SCALING_UNSPECIFIED
|
||||
at DXGI_SWAP_CHAIN_DESC.Count, dd 1
|
||||
at DXGI_SWAP_CHAIN_DESC.Quality, dd 0
|
||||
at DXGI_SWAP_CHAIN_DESC.BufferUsage, dd DXGI_USAGE_RENDER_TARGET_OUTPUT | DXGI_USAGE_UNORDERED_ACCESS | DXGI_USAGE_SHADER_INPUT
|
||||
at DXGI_SWAP_CHAIN_DESC.BufferCount, dd 1
|
||||
at DXGI_SWAP_CHAIN_DESC.OutputWindow, dd 0
|
||||
%ifdef FULLSCREEN
|
||||
at DXGI_SWAP_CHAIN_DESC.Windowed, dd 0
|
||||
%else
|
||||
at DXGI_SWAP_CHAIN_DESC.Windowed, dd 0xffffffff
|
||||
%endif
|
||||
at DXGI_SWAP_CHAIN_DESC.SwapEffect, dd DXGI_SWAP_EFFECT_DISCARD
|
||||
at DXGI_SWAP_CHAIN_DESC.Flags, dd 0
|
||||
iend
|
||||
|
||||
DATA_SECTION TEX_DESC
|
||||
_textureDesc:
|
||||
istruc D3D11_TEXTURE2D_DESC
|
||||
at D3D11_TEXTURE2D_DESC.Width, dd 0
|
||||
at D3D11_TEXTURE2D_DESC.Height, dd 0
|
||||
at D3D11_TEXTURE2D_DESC.MipLevels, dd 0
|
||||
at D3D11_TEXTURE2D_DESC.ArraySize, dd 1
|
||||
at D3D11_TEXTURE2D_DESC.Format, dd DXGI_FORMAT_R16G16B16A16_FLOAT
|
||||
at D3D11_TEXTURE2D_DESC.Count, dd 1
|
||||
at D3D11_TEXTURE2D_DESC.Quality, dd 0
|
||||
at D3D11_TEXTURE2D_DESC.Usage, dd D3D11_USAGE_DEFAULT
|
||||
at D3D11_TEXTURE2D_DESC.BindFlags, dd D3D11_BIND_RENDER_TARGET | D3D11_BIND_SHADER_RESOURCE | D3D11_BIND_UNORDERED_ACCESS
|
||||
at D3D11_TEXTURE2D_DESC.CPUAccessFlags, dd 0
|
||||
at D3D11_TEXTURE2D_DESC.MiscFlags, dd D3D11_RESOURCE_MISC_GENERATE_MIPS
|
||||
iend
|
||||
|
||||
DATA_SECTION UUID
|
||||
_uuidTexture2D:
|
||||
dd 0x6f15aaf2
|
||||
dw 0xd208
|
||||
dw 0x4e89
|
||||
db 0x9a,0xb4,0x48,0x95,0x35,0xd3,0x4f,0x9c
|
||||
|
||||
DATA_SECTION SHADER
|
||||
_src:
|
||||
incbin "gpu/b288.hlsl"
|
||||
db 0
|
||||
_srcEnd:
|
||||
_entrypoint:
|
||||
db "cs", 0
|
||||
_target:
|
||||
db "cs_5_0", 0
|
||||
_null:
|
||||
dd 0
|
||||
|
||||
BSS_SECTION SND
|
||||
_sndBuffer: resd 16384*4
|
||||
_sndBufferEnd:
|
||||
_waveHandle: resd 1024
|
||||
|
||||
BSS_SECTION D3D
|
||||
_device: resd 1
|
||||
_context: resd 1
|
||||
_swapChain: resd 1
|
||||
_backBufferTexture: resd 1
|
||||
_backBufferUAV: resd 1
|
||||
_computeShader: resd 1
|
||||
_blob: resd 1
|
||||
|
||||
BSS_SECTION RES
|
||||
_textureSRVUAVRTV: resb TEXTURE_2D_SRV_UAV_RTV_size
|
||||
|
||||
TEXT_SECTION SUR
|
||||
_createSRVUAVRTV: ; target, width, height
|
||||
pop eax
|
||||
pop edi
|
||||
pop dword [_textureDesc + D3D11_TEXTURE2D_DESC.Width]
|
||||
pop dword [_textureDesc + D3D11_TEXTURE2D_DESC.Height]
|
||||
push eax
|
||||
|
||||
lea eax, [edi + TEXTURE_2D_SRV_UAV_RTV.TEX]
|
||||
push eax
|
||||
push byte 0
|
||||
push dword _textureDesc
|
||||
com _device, ID3D11Device.CreateTexture2D
|
||||
|
||||
lea eax, [edi + TEXTURE_2D_SRV_UAV_RTV.SRV]
|
||||
push eax
|
||||
push byte 0
|
||||
push dword [edi + TEXTURE_2D_SRV_UAV_RTV.TEX]
|
||||
com _device, ID3D11Device.CreateShaderResourceView
|
||||
|
||||
lea eax, [edi + TEXTURE_2D_SRV_UAV_RTV.UAV]
|
||||
push eax
|
||||
push byte 0
|
||||
push dword [edi + TEXTURE_2D_SRV_UAV_RTV.TEX]
|
||||
com _device, ID3D11Device.CreateUnorderedAccessView
|
||||
|
||||
lea eax, [edi + TEXTURE_2D_SRV_UAV_RTV.RTV]
|
||||
push eax
|
||||
push byte 0
|
||||
push dword [edi + TEXTURE_2D_SRV_UAV_RTV.TEX]
|
||||
com _device, ID3D11Device.CreateRenderTargetView
|
||||
ret
|
||||
|
||||
TEXT_SECTION MAINLOOP
|
||||
global _start
|
||||
_start:
|
||||
%ifdef FULLSCREEN
|
||||
push byte 0
|
||||
push byte 0
|
||||
push byte 0
|
||||
push byte 0
|
||||
push byte 0
|
||||
push byte 0
|
||||
push byte 0
|
||||
push byte 0
|
||||
push byte 0
|
||||
push dword WS_POPUP | WS_VISIBLE | WS_MAXIMIZE
|
||||
push byte 0
|
||||
push dword ATOM_STATIC
|
||||
push byte 0
|
||||
%else
|
||||
push byte 0
|
||||
push byte 0
|
||||
push byte 0
|
||||
push byte 0
|
||||
push dword HEIGHT
|
||||
push dword WIDTH
|
||||
push byte 0
|
||||
push byte 0
|
||||
push dword WS_POPUP | WS_VISIBLE
|
||||
push byte 0
|
||||
push dword ATOM_STATIC
|
||||
push byte 0
|
||||
%endif
|
||||
call _CreateWindowExA@48
|
||||
mov [_swapChainDesc + DXGI_SWAP_CHAIN_DESC.OutputWindow], eax
|
||||
%ifdef FULLSCREEN
|
||||
call _ShowCursor@4
|
||||
%endif
|
||||
push dword _context
|
||||
push byte 0
|
||||
push dword _device
|
||||
push dword _swapChain
|
||||
push dword _swapChainDesc
|
||||
push byte D3D11_SDK_VERSION
|
||||
push byte 0
|
||||
push byte 0
|
||||
push byte 0
|
||||
push byte 0
|
||||
push byte D3D_DRIVER_TYPE_HARDWARE
|
||||
push byte 0
|
||||
call _D3D11CreateDeviceAndSwapChain@48
|
||||
|
||||
push byte 0
|
||||
push dword _blob
|
||||
push byte 0
|
||||
push dword D3DCOMPILE_OPTIMIZATION_LEVEL3
|
||||
push dword _target
|
||||
push dword _entrypoint
|
||||
push byte 0
|
||||
push byte 0
|
||||
push byte 0
|
||||
push dword _srcEnd-_src
|
||||
push dword _src
|
||||
call _D3DCompile@44
|
||||
|
||||
push dword _computeShader
|
||||
push byte 0
|
||||
com _blob, ID3D10Blob.GetBufferSize
|
||||
push eax
|
||||
com _blob, ID3D10Blob.GetBufferPointer
|
||||
push eax
|
||||
com _device, ID3D11Device.CreateComputeShader
|
||||
|
||||
push dword _backBufferTexture
|
||||
push dword _uuidTexture2D
|
||||
push byte 0
|
||||
com _swapChain, IDXGISwapChain.GetBuffer
|
||||
|
||||
push dword _backBufferUAV
|
||||
push byte 0
|
||||
push dword [_backBufferTexture]
|
||||
com _device, ID3D11Device.CreateUnorderedAccessView
|
||||
|
||||
push byte 0
|
||||
push byte 0
|
||||
push dword [_computeShader]
|
||||
com _context, ID3D11DeviceContext.CSSetShader
|
||||
|
||||
push dword WIDTH
|
||||
push dword HEIGHT
|
||||
push dword _textureSRVUAVRTV
|
||||
call _createSRVUAVRTV
|
||||
|
||||
_initSound:
|
||||
push byte 0
|
||||
push byte 0
|
||||
push byte 0
|
||||
push dword _waveFormatEx
|
||||
push byte WAVE_MAPPER
|
||||
push dword _waveHandle
|
||||
call _waveOutOpen@24
|
||||
|
||||
push byte WAVEHDR_size
|
||||
push dword _waveHdr
|
||||
push dword [_waveHandle]
|
||||
call _waveOutWrite@12
|
||||
|
||||
_mainloop:
|
||||
push byte MMTIME_size
|
||||
push dword _mmTime
|
||||
push dword [_waveHandle]
|
||||
call _waveOutGetPosition@12
|
||||
|
||||
push byte 0
|
||||
push dword _backBufferUAV
|
||||
push byte 1
|
||||
push byte 0
|
||||
com _context, ID3D11DeviceContext.CSSetUnorderedAccessViews
|
||||
|
||||
push byte 1
|
||||
push byte 45
|
||||
push byte 80
|
||||
com _context, ID3D11DeviceContext.Dispatch
|
||||
|
||||
push byte 0
|
||||
push byte 1
|
||||
com _swapChain, IDXGISwapChain.Present
|
||||
|
||||
push byte VK_ESCAPE
|
||||
call _GetAsyncKeyState@4
|
||||
dec eax
|
||||
js short _mainloop
|
||||
_end:
|
||||
push eax
|
||||
call _ExitProcess@4
|
||||
Reference in New Issue
Block a user