wined3d: Remove some unnecessary forward declarations.
This commit is contained in:
parent
a1465ba45f
commit
85107d81f4
|
@ -34,10 +34,6 @@ WINE_DEFAULT_DEBUG_CHANNEL(d3d_surface);
|
||||||
WINE_DECLARE_DEBUG_CHANNEL(d3d);
|
WINE_DECLARE_DEBUG_CHANNEL(d3d);
|
||||||
#define GLINFO_LOCATION This->resource.wineD3DDevice->adapter->gl_info
|
#define GLINFO_LOCATION This->resource.wineD3DDevice->adapter->gl_info
|
||||||
|
|
||||||
static void d3dfmt_p8_init_palette(IWineD3DSurfaceImpl *This, BYTE table[256][4], BOOL colorkey);
|
|
||||||
static void d3dfmt_p8_upload_palette(IWineD3DSurface *iface, CONVERT_TYPES convert);
|
|
||||||
static void surface_remove_pbo(IWineD3DSurfaceImpl *This);
|
|
||||||
|
|
||||||
static void surface_force_reload(IWineD3DSurface *iface)
|
static void surface_force_reload(IWineD3DSurface *iface)
|
||||||
{
|
{
|
||||||
IWineD3DSurfaceImpl *This = (IWineD3DSurfaceImpl *)iface;
|
IWineD3DSurfaceImpl *This = (IWineD3DSurfaceImpl *)iface;
|
||||||
|
@ -1819,6 +1815,86 @@ HRESULT d3dfmt_get_conv(IWineD3DSurfaceImpl *This, BOOL need_alpha_ck, BOOL use_
|
||||||
return WINED3D_OK;
|
return WINED3D_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void d3dfmt_p8_init_palette(IWineD3DSurfaceImpl *This, BYTE table[256][4], BOOL colorkey)
|
||||||
|
{
|
||||||
|
IWineD3DDeviceImpl *device = This->resource.wineD3DDevice;
|
||||||
|
IWineD3DPaletteImpl *pal = This->palette;
|
||||||
|
BOOL index_in_alpha = FALSE;
|
||||||
|
unsigned int i;
|
||||||
|
|
||||||
|
/* Old games like StarCraft, C&C, Red Alert and others use P8 render targets.
|
||||||
|
* Reading back the RGB output each lockrect (each frame as they lock the whole screen)
|
||||||
|
* is slow. Further RGB->P8 conversion is not possible because palettes can have
|
||||||
|
* duplicate entries. Store the color key in the unused alpha component to speed the
|
||||||
|
* download up and to make conversion unneeded. */
|
||||||
|
index_in_alpha = primary_render_target_is_p8(device);
|
||||||
|
|
||||||
|
if (!pal)
|
||||||
|
{
|
||||||
|
UINT dxVersion = ((IWineD3DImpl *)device->wineD3D)->dxVersion;
|
||||||
|
|
||||||
|
/* In DirectDraw the palette is a property of the surface, there are no such things as device palettes. */
|
||||||
|
if (dxVersion <= 7)
|
||||||
|
{
|
||||||
|
ERR("This code should never get entered for DirectDraw!, expect problems\n");
|
||||||
|
if (index_in_alpha)
|
||||||
|
{
|
||||||
|
/* Guarantees that memory representation remains correct after sysmem<->texture transfers even if
|
||||||
|
* there's no palette at this time. */
|
||||||
|
for (i = 0; i < 256; i++) table[i][3] = i;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
/* Direct3D >= 8 palette usage style: P8 textures use device palettes, palette entry format is A8R8G8B8,
|
||||||
|
* alpha is stored in peFlags and may be used by the app if D3DPTEXTURECAPS_ALPHAPALETTE device
|
||||||
|
* capability flag is present (wine does advertise this capability) */
|
||||||
|
for (i = 0; i < 256; ++i)
|
||||||
|
{
|
||||||
|
table[i][0] = device->palettes[device->currentPalette][i].peRed;
|
||||||
|
table[i][1] = device->palettes[device->currentPalette][i].peGreen;
|
||||||
|
table[i][2] = device->palettes[device->currentPalette][i].peBlue;
|
||||||
|
table[i][3] = device->palettes[device->currentPalette][i].peFlags;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
TRACE("Using surface palette %p\n", pal);
|
||||||
|
/* Get the surface's palette */
|
||||||
|
for (i = 0; i < 256; ++i)
|
||||||
|
{
|
||||||
|
table[i][0] = pal->palents[i].peRed;
|
||||||
|
table[i][1] = pal->palents[i].peGreen;
|
||||||
|
table[i][2] = pal->palents[i].peBlue;
|
||||||
|
|
||||||
|
/* When index_in_alpha is set the palette index is stored in the
|
||||||
|
* alpha component. In case of a readback we can then read
|
||||||
|
* GL_ALPHA. Color keying is handled in BltOverride using a
|
||||||
|
* GL_ALPHA_TEST using GL_NOT_EQUAL. In case of index_in_alpha the
|
||||||
|
* color key itself is passed to glAlphaFunc in other cases the
|
||||||
|
* alpha component of pixels that should be masked away is set to 0. */
|
||||||
|
if (index_in_alpha)
|
||||||
|
{
|
||||||
|
table[i][3] = i;
|
||||||
|
}
|
||||||
|
else if (colorkey && (i >= This->SrcBltCKey.dwColorSpaceLowValue)
|
||||||
|
&& (i <= This->SrcBltCKey.dwColorSpaceHighValue))
|
||||||
|
{
|
||||||
|
table[i][3] = 0x00;
|
||||||
|
}
|
||||||
|
else if(pal->Flags & WINEDDPCAPS_ALPHA)
|
||||||
|
{
|
||||||
|
table[i][3] = pal->palents[i].peFlags;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
table[i][3] = 0xFF;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static HRESULT d3dfmt_convert_surface(const BYTE *src, BYTE *dst, UINT pitch, UINT width,
|
static HRESULT d3dfmt_convert_surface(const BYTE *src, BYTE *dst, UINT pitch, UINT width,
|
||||||
UINT height, UINT outpitch, CONVERT_TYPES convert, IWineD3DSurfaceImpl *This)
|
UINT height, UINT outpitch, CONVERT_TYPES convert, IWineD3DSurfaceImpl *This)
|
||||||
{
|
{
|
||||||
|
@ -2190,65 +2266,6 @@ static HRESULT d3dfmt_convert_surface(const BYTE *src, BYTE *dst, UINT pitch, UI
|
||||||
return WINED3D_OK;
|
return WINED3D_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void d3dfmt_p8_init_palette(IWineD3DSurfaceImpl *This, BYTE table[256][4], BOOL colorkey) {
|
|
||||||
IWineD3DPaletteImpl* pal = This->palette;
|
|
||||||
IWineD3DDeviceImpl *device = This->resource.wineD3DDevice;
|
|
||||||
BOOL index_in_alpha = FALSE;
|
|
||||||
int dxVersion = ( (IWineD3DImpl *) device->wineD3D)->dxVersion;
|
|
||||||
unsigned int i;
|
|
||||||
|
|
||||||
/* Old games like StarCraft, C&C, Red Alert and others use P8 render targets.
|
|
||||||
* Reading back the RGB output each lockrect (each frame as they lock the whole screen)
|
|
||||||
* is slow. Further RGB->P8 conversion is not possible because palettes can have
|
|
||||||
* duplicate entries. Store the color key in the unused alpha component to speed the
|
|
||||||
* download up and to make conversion unneeded. */
|
|
||||||
index_in_alpha = primary_render_target_is_p8(device);
|
|
||||||
|
|
||||||
if (pal == NULL) {
|
|
||||||
/* In DirectDraw the palette is a property of the surface, there are no such things as device palettes. */
|
|
||||||
if(dxVersion <= 7) {
|
|
||||||
ERR("This code should never get entered for DirectDraw!, expect problems\n");
|
|
||||||
if(index_in_alpha) {
|
|
||||||
/* Guarantees that memory representation remains correct after sysmem<->texture transfers even if
|
|
||||||
there's no palette at this time. */
|
|
||||||
for (i = 0; i < 256; i++) table[i][3] = i;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
/* Direct3D >= 8 palette usage style: P8 textures use device palettes, palette entry format is A8R8G8B8,
|
|
||||||
alpha is stored in peFlags and may be used by the app if D3DPTEXTURECAPS_ALPHAPALETTE device
|
|
||||||
capability flag is present (wine does advertise this capability) */
|
|
||||||
for (i = 0; i < 256; i++) {
|
|
||||||
table[i][0] = device->palettes[device->currentPalette][i].peRed;
|
|
||||||
table[i][1] = device->palettes[device->currentPalette][i].peGreen;
|
|
||||||
table[i][2] = device->palettes[device->currentPalette][i].peBlue;
|
|
||||||
table[i][3] = device->palettes[device->currentPalette][i].peFlags;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
TRACE("Using surface palette %p\n", pal);
|
|
||||||
/* Get the surface's palette */
|
|
||||||
for (i = 0; i < 256; i++) {
|
|
||||||
table[i][0] = pal->palents[i].peRed;
|
|
||||||
table[i][1] = pal->palents[i].peGreen;
|
|
||||||
table[i][2] = pal->palents[i].peBlue;
|
|
||||||
|
|
||||||
/* When index_in_alpha is the palette index is stored in the alpha component. In case of a readback
|
|
||||||
we can then read GL_ALPHA. Color keying is handled in BltOverride using a GL_ALPHA_TEST using GL_NOT_EQUAL.
|
|
||||||
In case of index_in_alpha the color key itself is passed to glAlphaFunc in other cases the alpha component
|
|
||||||
of pixels that should be masked away is set to 0. */
|
|
||||||
if(index_in_alpha) {
|
|
||||||
table[i][3] = i;
|
|
||||||
} else if(colorkey && (i >= This->SrcBltCKey.dwColorSpaceLowValue) && (i <= This->SrcBltCKey.dwColorSpaceHighValue)) {
|
|
||||||
table[i][3] = 0x00;
|
|
||||||
} else if(pal->Flags & WINEDDPCAPS_ALPHA) {
|
|
||||||
table[i][3] = pal->palents[i].peFlags;
|
|
||||||
} else {
|
|
||||||
table[i][3] = 0xFF;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* This function is used in case of 8bit paletted textures to upload the palette.
|
/* This function is used in case of 8bit paletted textures to upload the palette.
|
||||||
It supports GL_EXT_paletted_texture and GL_ARB_fragment_program, support for other
|
It supports GL_EXT_paletted_texture and GL_ARB_fragment_program, support for other
|
||||||
extensions like ATI_fragment_shaders is possible.
|
extensions like ATI_fragment_shaders is possible.
|
||||||
|
|
Loading…
Reference in New Issue