|
|
;----------------------------------------------------------------------------- ; ; This file contains the output buffer color writing routines. ; ; Copyright (C) Microsoft Corporation, 1997. ; ; Need to change this from Segment asm method to be same as other files. ; This is the only file that is doing it this way. ; ;-----------------------------------------------------------------------------
INCLUDE iammx.inc INCLUDE offs_acp.inc
include(`m4hdr.mh')dnl include(`cvars.mh')dnl include(`bufwrite.mh')dnl
.586p .model flat .data PUBLIC g_uDitherValue g_uDitherValue dq ?
PUBLIC SetAlphato0x00 SetAlphato0x00 dq 0000000000ffffffh PUBLIC SetAlphato0xff SetAlphato0xff dq 00000000ff000000h
; 565 values. Too bad that there are 5 values. 4 values would fit into one cache line. PUBLIC u888to565RedBlueMask u888to565RedBlueMask dq 00f800f800f800f8h
PUBLIC u888to565GreenMask u888to565GreenMask dq 0000fc000000fc00h
PUBLIC u888to565Multiplier u888to565Multiplier dq 2000000420000004h
PUBLIC uVal0x000007ff03ff07ff uVal0x000007ff03ff07ff dq 000007ff03ff07ffh ; Or mask to increase 565 color value
PUBLIC uVal0x0000078003c00780 uVal0x0000078003c00780 dq 0000078003c00780h ; Bits to test for dithering in 565
; 555 values PUBLIC u888to555RedBlueMask u888to555RedBlueMask dq 00f800f800f800f8h
PUBLIC u888to555GreenMask u888to555GreenMask dq 0000f8000000f800h
PUBLIC u888to555Multiplier u888to555Multiplier dq 2000000820000008h
PUBLIC uVal0x000007ff07ff07ff uVal0x000007ff07ff07ff dq 000007ff07ff07ffh ; Or mask to increase 555 color value
PUBLIC uVal0x0000078007800780 uVal0x0000078007800780 dq 0000078007800780h ; Bits to test for dithering in 555
Val0x008000800080 dq 0000008000800080h Val0x002400060001 dq 0000002400060001h Val0x000500050005 dq 0000000500050005h
.code
; Names are read LSB to MSB, so B5G6R5 means five bits of blue starting ; at the LSB, then six bits of green, then five bits of red.
;----------------------------------------------------------------------------- ; ; Write_B8G8R8X8_NoDither ; ; Writes output in BGR-888 format. ; ;----------------------------------------------------------------------------- ;void Write_B8G8R8X8_NoDither(PD3DI_RASTCTX pCtx, PD3DI_RASTPRIM pP, PD3DI_RASTSPAN pS) ;{ PUBLIC _MMX_BufWrite_B8G8R8X8_NoDither _MMX_BufWrite_B8G8R8X8_NoDither:
d_BufWrite_B8G8R8X8_NoDither(NotMonolithic)
;; just returns for C, since we really cant loop with function calls ;ret jmp dword ptr XpCtx(pfnPixelEnd) ;}
;----------------------------------------------------------------------------- ; ; Write_B8G8R8A8_NoDither ; ; Writes output in BGRA-8888 format. ; ;----------------------------------------------------------------------------- ;void Write_B8G8R8A8_NoDither(PD3DI_RASTCTX pCtx, PD3DI_RASTPRIM pP, PD3DI_RASTSPAN pS) ;{ PUBLIC _MMX_BufWrite_B8G8R8A8_NoDither _MMX_BufWrite_B8G8R8A8_NoDither:
d_BufWrite_B8G8R8A8_NoDither(NotMonolithic)
; just returns for C, since we really cant loop with function calls ;ret jmp dword ptr XpCtx(pfnPixelEnd) ;}
;----------------------------------------------------------------------------- ; ; Write_B5G6R5_NoDither ; ; Writes output in BGR-565 format. ; ;----------------------------------------------------------------------------- ;void Write_B5G6R5_NoDither(PD3DI_RASTCTX pCtx, PD3DI_RASTPRIM pP, PD3DI_RASTSPAN pS) ;{ PUBLIC _MMX_BufWrite_B5G6R5_NoDither _MMX_BufWrite_B5G6R5_NoDither:
d_BufWrite_B5G6R5_NoDither(NotMonolithic)
; just returns for C, since we really cant loop with function calls jmp dword ptr XpCtx(pfnPixelEnd) ;}
;----------------------------------------------------------------------------- ; ; Write_B5G6R5_Dither ; ; Writes output in BGR-565 format, dithered. ; ;----------------------------------------------------------------------------- ;void Write_B5G6R5_Dither(PD3DI_RASTCTX pCtx, PD3DI_RASTPRIM pP, PD3DI_RASTSPAN pS) ;{ PUBLIC _MMX_BufWrite_B5G6R5_Dither _MMX_BufWrite_B5G6R5_Dither:
d_BufWrite_B5G6R5_Dither(NotMonolithic)
; just returns for C, since we really cant loop with function calls ;ret jmp dword ptr XpCtx(pfnPixelEnd)
;}
;----------------------------------------------------------------------------- ; ; Write_B5G5R5_NoDither ; ; Writes output in BGR-555 format. ; ;----------------------------------------------------------------------------- ;void Write_B5G5R5_NoDither(PD3DI_RASTCTX pCtx, PD3DI_RASTPRIM pP, PD3DI_RASTSPAN pS) ;{ PUBLIC _MMX_BufWrite_B5G5R5_NoDither _MMX_BufWrite_B5G5R5_NoDither:
d_BufWrite_B5G5R5_NoDither(NotMonolithic)
; just returns for C, since we really cant loop with function calls ;ret jmp dword ptr XpCtx(pfnPixelEnd) ;}
;----------------------------------------------------------------------------- ; ; Write_B5G5R5_Dither ; ; Writes output in BGR-555 format, dithered. ; ;----------------------------------------------------------------------------- ;void Write_B5G5R5_Dither(PD3DI_RASTCTX pCtx, PD3DI_RASTPRIM pP, PD3DI_RASTSPAN pS) ;{ PUBLIC _MMX_BufWrite_B5G5R5_Dither _MMX_BufWrite_B5G5R5_Dither:
d_BufWrite_B5G5R5_Dither(NotMonolithic)
; just returns for C, since we really cant loop with function calls ;ret jmp dword ptr XpCtx(pfnPixelEnd) ;}
;----------------------------------------------------------------------------- ; ; Write_B5G5R5A1_NoDither ; ; Writes output in BGRA-1555 format. ; ;----------------------------------------------------------------------------- ;void Write_B5G5R5A1_NoDither(PD3DI_RASTCTX pCtx, PD3DI_RASTPRIM pP, PD3DI_RASTSPAN pS) ;{ PUBLIC _MMX_BufWrite_B5G5R5A1_NoDither _MMX_BufWrite_B5G5R5A1_NoDither:
d_BufWrite_B5G5R5A1_NoDither(NotMonolithic)
; just returns for C, since we really cant loop with function calls ;ret jmp dword ptr XpCtx(pfnPixelEnd) ;}
;----------------------------------------------------------------------------- ; ; Write_B5G5R5A1_Dither ; ; Writes output in BGRA-1555 format, dithered. ; ;----------------------------------------------------------------------------- ;void Write_B5G5R5A1_Dither(PD3DI_RASTCTX pCtx, PD3DI_RASTPRIM pP, PD3DI_RASTSPAN pS) ;{ PUBLIC _MMX_BufWrite_B5G5R5A1_Dither _MMX_BufWrite_B5G5R5A1_Dither:
d_BufWrite_B5G5R5A1_Dither(NotMonolithic) ; just returns for C, since we really cant loop with function calls ;ret jmp dword ptr XpCtx(pfnPixelEnd) ;}
;----------------------------------------------------------------------------- ; ; Write_B8G8R8_NoDither ; ; Writes output in BGR-888 format. ; ;----------------------------------------------------------------------------- ;void Write_B8G8R8_NoDither(PD3DI_RASTCTX pCtx, PD3DI_RASTPRIM pP, PD3DI_RASTSPAN pS) ;{ PUBLIC _MMX_BufWrite_B8G8R8_NoDither _MMX_BufWrite_B8G8R8_NoDither:
d_BufWrite_B8G8R8_NoDither(NotMonolithic) jmp dword ptr XpCtx(pfnPixelEnd) ;}
;----------------------------------------------------------------------------- ; ; Write_Palette8_NoDither ; ; Writes output in Palette8 format. ; ;----------------------------------------------------------------------------- ;void Write_Palette8_NoDither(PD3DI_RASTCTX pCtx, PD3DI_RASTPRIM pP, PD3DI_RASTSPAN pS) ;{ PUBLIC _MMX_BufWrite_Palette8_NoDither _MMX_BufWrite_Palette8_NoDither:
d_BufWrite_Palette8_Dither(NotMonolithic)
jmp dword ptr XpCtx(pfnPixelEnd) ;}
END
|