mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-01-03 22:31:22 +01:00
8b2c540544
This adds xfb support to the videosoftware backend, which increases it's accuracy and more imporantly, enables the usage of many homebrew apps which write directly to the xfb on the videosoftware backend. Conflicts: Source/Core/VideoBackends/Software/SWRenderer.cpp Source/Core/VideoBackends/Software/SWmain.cpp
58 lines
1.4 KiB
C++
58 lines
1.4 KiB
C++
// Copyright 2013 Dolphin Emulator Project
|
|
// Licensed under GPLv2
|
|
// Refer to the license.txt file included.
|
|
|
|
#ifndef _EFB_INTERFACE_H_
|
|
#define _EFB_INTERFACE_H_
|
|
|
|
#include "VideoCommon.h"
|
|
|
|
namespace EfbInterface
|
|
{
|
|
const int DEPTH_BUFFER_START = EFB_WIDTH * EFB_HEIGHT * 3;
|
|
|
|
// xfb color format - packed so the compiler doesn't mess with alignment
|
|
#pragma pack(push,1)
|
|
typedef struct {
|
|
u8 Y;
|
|
u8 UV;
|
|
} yuv422_packed;
|
|
#pragma pack(pop)
|
|
|
|
// But this struct is only used internally, so we could optimise alignment
|
|
typedef struct {
|
|
u8 Y;
|
|
s8 U;
|
|
s8 V;
|
|
} yuv444;
|
|
|
|
enum { ALP_C, BLU_C, GRN_C, RED_C };
|
|
|
|
// color order is ABGR in order to emulate RGBA on little-endian hardware
|
|
|
|
// does full blending of an incoming pixel
|
|
void BlendTev(u16 x, u16 y, u8 *color);
|
|
|
|
// compare z at location x,y
|
|
// writes it if it passes
|
|
// returns result of compare.
|
|
bool ZCompare(u16 x, u16 y, u32 z);
|
|
|
|
// sets the color and alpha
|
|
void SetColor(u16 x, u16 y, u8 *color);
|
|
void SetDepth(u16 x, u16 y, u32 depth);
|
|
|
|
void GetColor(u16 x, u16 y, u8 *color);
|
|
void GetColorYUV(u16 x, u16 y, yuv444 *color);
|
|
u32 GetDepth(u16 x, u16 y);
|
|
|
|
u8* GetPixelPointer(u16 x, u16 y, bool depth);
|
|
|
|
void CopyToXFB(yuv422_packed* xfb_in_ram, u32 fbWidth, u32 fbHeight, const EFBRectangle& sourceRc, float Gamma);
|
|
void BypassXFB(u8* texture, u32 fbWidth, u32 fbHeight, const EFBRectangle& sourceRc, float Gamma);
|
|
|
|
void DoState(PointerWrap &p);
|
|
}
|
|
|
|
#endif
|