[PATCH v3 4/4] wined3d: Expose DF16/24 support
Stefan Dösinger
stefandoesinger at gmail.com
Sun Feb 3 03:44:11 CST 2019
I think INTZ+FETCH4 is an unlikely siruation because intz is an nvidia extension and fetch4 an AMD one. I would be very surprised to find a game needing it. I guess some later gpus might expose both.
Am 2. Februar 2019 21:46:27 MEZ schrieb Axel Davy <davyaxel0 at gmail.com>:
>To my knowledge, DF24 doesn't have stencil (unlike INTZ).
>Using a buffer with stencil is suboptimal, I would advise using a
>format
>without.
>
>Axel
>
>On 01/02/2019 01:56, Daniel Ansorregui wrote:
>> - This assumes FETCH4 is already supported by wine
>> And checks for ARB_texture_gather support before exposing DF24
>>
>> Signed-off-by: Daniel Ansorregui <mailszeros at gmail.com>
>> ---
>> dlls/wined3d/directx.c | 6 ++++++
>> dlls/wined3d/utils.c | 30 ++++++++++++++++++++++++++++++
>> include/wine/wined3d.h | 2 ++
>> 3 files changed, 38 insertions(+)
>>
>> diff --git a/dlls/wined3d/directx.c b/dlls/wined3d/directx.c
>> index 75622be80c..be0c514a78 100644
>> --- a/dlls/wined3d/directx.c
>> +++ b/dlls/wined3d/directx.c
>> @@ -1723,6 +1723,12 @@ HRESULT CDECL
>wined3d_check_device_format(const struct wined3d *wined3d, UINT ad
>> return WINED3DOK_NOMIPGEN;
>> }
>>
>> + if ((check_format_id == WINED3DFMT_DF24) &&
>!adapter->gl_info.supported[ARB_TEXTURE_GATHER])
>> + {
>> + TRACE("No Support for Fetch4 disabling DF24 support.\n");
>> + return WINED3DERR_NOTAVAILABLE;
>> + }
>> +
>> return WINED3D_OK;
>> }
>>
>> diff --git a/dlls/wined3d/utils.c b/dlls/wined3d/utils.c
>> index 82111c8bb2..24fce97594 100644
>> --- a/dlls/wined3d/utils.c
>> +++ b/dlls/wined3d/utils.c
>> @@ -65,6 +65,8 @@ format_index_remap[] =
>> {WINED3DFMT_R16, WINED3D_FORMAT_FOURCC_BASE + 20},
>> {WINED3DFMT_AL16, WINED3D_FORMAT_FOURCC_BASE + 21},
>> {WINED3DFMT_NV12, WINED3D_FORMAT_FOURCC_BASE + 22},
>> + {WINED3DFMT_DF16, WINED3D_FORMAT_FOURCC_BASE + 23},
>> + {WINED3DFMT_DF24, WINED3D_FORMAT_FOURCC_BASE + 24},
>> };
>>
>> #define WINED3D_FORMAT_COUNT (WINED3D_FORMAT_FOURCC_BASE +
>ARRAY_SIZE(format_index_remap))
>> @@ -141,6 +143,8 @@ static const struct wined3d_format_channels
>formats[] =
>> {WINED3DFMT_NVHU, 0, 0, 0, 0, 0, 0,
> 0, 0, 2, 0, 0},
>> {WINED3DFMT_NVHS, 0, 0, 0, 0, 0, 0,
> 0, 0, 2, 0, 0},
>> {WINED3DFMT_NULL, 8, 8, 8, 8, 0, 8,
>16, 24, 4, 0, 0},
>> + {WINED3DFMT_DF16, 0, 0, 0, 0, 0, 0,
>0, 0, 2, 16, 0},
>> + {WINED3DFMT_DF24, 0, 0, 0, 0, 0, 0,
>0, 0, 4, 24, 0},
>> /* Unsure about them, could not find a Windows driver that
>supports them */
>> {WINED3DFMT_R16, 16, 0, 0, 0, 0, 0,
> 0, 0, 2, 0, 0},
>> {WINED3DFMT_AL16, 0, 0, 0, 16, 0, 0,
> 0, 16, 4, 0, 0},
>> @@ -346,6 +350,8 @@ static const struct wined3d_format_base_flags
>format_base_flags[] =
>> {WINED3DFMT_R16,
>WINED3DFMT_FLAG_ALLOW_FETCH4},
>> {WINED3DFMT_R32_FLOAT,
>WINED3DFMT_FLAG_ALLOW_FETCH4},
>> {WINED3DFMT_A8_UNORM,
>WINED3DFMT_FLAG_ALLOW_FETCH4},
>> + {WINED3DFMT_DF16, WINED3DFMT_FLAG_ALLOW_FETCH4},
>> + {WINED3DFMT_DF24, WINED3DFMT_FLAG_ALLOW_FETCH4},
>> };
>>
>> static void rgb888_from_rgb565(WORD rgb565, BYTE *r, BYTE *g, BYTE
>*b)
>> @@ -1894,6 +1900,25 @@ static const struct
>wined3d_format_texture_info format_texture_info[] =
>> WINED3DFMT_FLAG_TEXTURE |
>WINED3DFMT_FLAG_POSTPIXELSHADER_BLENDING | WINED3DFMT_FLAG_FILTERING
>> | WINED3DFMT_FLAG_DEPTH | WINED3DFMT_FLAG_STENCIL,
>> ARB_FRAMEBUFFER_OBJECT, NULL},
>> + {WINED3DFMT_DF16, GL_DEPTH_COMPONENT,
>GL_DEPTH_COMPONENT, 0,
>> + GL_DEPTH_COMPONENT, GL_UNSIGNED_SHORT,
> 0,
>> + WINED3DFMT_FLAG_DEPTH,
>> + WINED3D_GL_EXT_NONE, NULL},
>> + {WINED3DFMT_DF16, GL_DEPTH_COMPONENT16,
>GL_DEPTH_COMPONENT16, 0,
>> + GL_DEPTH_COMPONENT, GL_UNSIGNED_SHORT,
> 0,
>> + WINED3DFMT_FLAG_TEXTURE |
>WINED3DFMT_FLAG_POSTPIXELSHADER_BLENDING | WINED3DFMT_FLAG_FILTERING
>> + | WINED3DFMT_FLAG_DEPTH,
>> + ARB_DEPTH_TEXTURE, NULL},
>> + {WINED3DFMT_DF24, GL_DEPTH24_STENCIL8_EXT,
> GL_DEPTH24_STENCIL8_EXT, 0,
>> + GL_DEPTH_STENCIL_EXT, GL_UNSIGNED_INT_24_8_EXT,
> 0,
>> + WINED3DFMT_FLAG_TEXTURE |
>WINED3DFMT_FLAG_POSTPIXELSHADER_BLENDING | WINED3DFMT_FLAG_FILTERING
>> + | WINED3DFMT_FLAG_DEPTH,
>> + EXT_PACKED_DEPTH_STENCIL, NULL},
>> + {WINED3DFMT_DF24, GL_DEPTH24_STENCIL8,
> GL_DEPTH24_STENCIL8, 0,
>> + GL_DEPTH_STENCIL, GL_UNSIGNED_INT_24_8,
> 0,
>> + WINED3DFMT_FLAG_TEXTURE |
>WINED3DFMT_FLAG_POSTPIXELSHADER_BLENDING | WINED3DFMT_FLAG_FILTERING
>> + | WINED3DFMT_FLAG_DEPTH,
>> + ARB_FRAMEBUFFER_OBJECT, NULL},
>> {WINED3DFMT_NULL, 0,
> 0, 0,
>> GL_RGBA,
>GL_UNSIGNED_INT_8_8_8_8_REV, 0,
>> WINED3DFMT_FLAG_TEXTURE | WINED3DFMT_FLAG_RENDERTARGET
>| WINED3DFMT_FLAG_FBO_ATTACHABLE,
>> @@ -3533,6 +3558,9 @@ static void apply_format_fixups(struct
>wined3d_adapter *adapter, struct wined3d_
>> {WINED3DFMT_INTZ, "XXXX", FALSE,
>WINED3D_GL_EXT_NONE},
>> {WINED3DFMT_INTZ, "XYZW", FALSE,
>WINED3D_GL_LEGACY_CONTEXT},
>>
>> + {WINED3DFMT_DF16, "X001", FALSE,
>WINED3D_GL_EXT_NONE},
>> + {WINED3DFMT_DF24, "X001", FALSE,
>WINED3D_GL_EXT_NONE},
>> +
>> {WINED3DFMT_L8_UNORM, "XXX1", FALSE,
>ARB_TEXTURE_RG},
>> };
>>
>> @@ -4387,6 +4415,8 @@ const char *debug_d3dformat(enum
>wined3d_format_id format_id)
>> FMT_TO_STR(WINED3DFMT_R16);
>> FMT_TO_STR(WINED3DFMT_AL16);
>> FMT_TO_STR(WINED3DFMT_NV12);
>> + FMT_TO_STR(WINED3DFMT_DF16);
>> + FMT_TO_STR(WINED3DFMT_DF24);
>> #undef FMT_TO_STR
>> default:
>> {
>> diff --git a/include/wine/wined3d.h b/include/wine/wined3d.h
>> index e09e4e1fce..e6c3c1b802 100644
>> --- a/include/wine/wined3d.h
>> +++ b/include/wine/wined3d.h
>> @@ -271,6 +271,8 @@ enum wined3d_format_id
>> WINED3DFMT_R16 = WINEMAKEFOURCC('
>','R','1','6'),
>> WINED3DFMT_AL16 =
>WINEMAKEFOURCC('A','L','1','6'),
>> WINED3DFMT_NV12 =
>WINEMAKEFOURCC('N','V','1','2'),
>> + WINED3DFMT_DF16 =
>WINEMAKEFOURCC('D','F','1','6'),
>> + WINED3DFMT_DF24 =
>WINEMAKEFOURCC('D','F','2','4'),
>>
>> WINED3DFMT_FORCE_DWORD = 0xffffffff
>> };
--
Diese Nachricht wurde von meinem Android-Gerät mit K-9 Mail gesendet.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.winehq.org/pipermail/wine-devel/attachments/20190203/d493fb69/attachment.html>
More information about the wine-devel
mailing list