mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-25 15:10:10 +01:00
st/nine: Implement ATOC hack
ATOC is an hack for Alpha to coverage that is supported by NV and Intel. You need to check the support for it with CheckDeviceFormat. Reviewed-by: Tiziano Bacocco <tizbac2@gmail.com> Signed-off-by: Axel Davy <axel.davy@ens.fr>
This commit is contained in:
parent
0a4aaf1d41
commit
75676886e4
3 changed files with 13 additions and 0 deletions
|
|
@ -651,6 +651,7 @@ typedef enum _D3DFORMAT {
|
|||
D3DFMT_BINARYBUFFER = 199,
|
||||
D3DFMT_ATI1 = MAKEFOURCC('A', 'T', 'I', '1'),
|
||||
D3DFMT_ATI2 = MAKEFOURCC('A', 'T', 'I', '2'),
|
||||
D3DFMT_ATOC = MAKEFOURCC('A', 'T', 'O', 'C'),
|
||||
D3DFMT_DF16 = MAKEFOURCC('D', 'F', '1', '6'),
|
||||
D3DFMT_DF24 = MAKEFOURCC('D', 'F', '2', '4'),
|
||||
D3DFMT_INTZ = MAKEFOURCC('I', 'N', 'T', 'Z'),
|
||||
|
|
|
|||
|
|
@ -307,6 +307,10 @@ NineAdapter9_CheckDeviceFormat( struct NineAdapter9 *This,
|
|||
return screen->get_param(screen, PIPE_CAP_MULTISAMPLE_Z_RESOLVE) ?
|
||||
D3D_OK : D3DERR_NOTAVAILABLE;
|
||||
|
||||
/* ATOC hack */
|
||||
if (CheckFormat == D3DFMT_ATOC && RType == D3DRTYPE_SURFACE)
|
||||
return D3D_OK;
|
||||
|
||||
if (Usage & D3DUSAGE_QUERY_POSTPIXELSHADER_BLENDING)
|
||||
bind |= PIPE_BIND_BLENDABLE;
|
||||
|
||||
|
|
|
|||
|
|
@ -2075,6 +2075,14 @@ NineDevice9_SetRenderState( struct NineDevice9 *This,
|
|||
}
|
||||
}
|
||||
|
||||
/* NV hack */
|
||||
if (State == D3DRS_ADAPTIVETESS_Y &&
|
||||
(Value == D3DFMT_ATOC || (Value == D3DFMT_UNKNOWN && state->rs[NINED3DRS_ALPHACOVERAGE]))) {
|
||||
state->rs[NINED3DRS_ALPHACOVERAGE] = (Value == D3DFMT_ATOC);
|
||||
state->changed.group |= NINE_STATE_BLEND;
|
||||
return D3D_OK;
|
||||
}
|
||||
|
||||
user_assert(State < Elements(state->rs), D3DERR_INVALIDCALL);
|
||||
|
||||
if (likely(state->rs[State] != Value) || unlikely(This->is_recording)) {
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue