[PATCH 4/5] wined3d: Retrieve caps from both WINED3D_GL_RES_TYPE_TEX_2D and WINED3D_GL_RES_TYPE_RB for 2D textures in wined3d_check_device_format().

Zebediah Figura zfigura at codeweavers.com
Thu Jun 16 14:05:57 CDT 2022


On 6/16/22 04:48, Henri Verbeet wrote:
> On Wed, 15 Jun 2022 at 23:56, Zebediah Figura <wine at gitlab.winehq.org> wrote:
>> WINED3D_GL_RES_TYPE_RB is not used by the Vulkan backend.
>>
>> We could alternatively solve this by filling WINED3D_GL_RES_TYPE_RB for the
>> Vulkan backend, but this makes less sense. Checking both formats is more in line
>> with what is done elsewhere, e.g. wined3d_check_surface_format().
> 
> The issue with that is that the RB flags may be a superset of the
> TEX_2D flags. For example, some GPUs from a certain era support
> depth/stencil renderbuffer attachments, but not depth/shadow textures.
> Doing this the other way around probably makes more sense; i.e., "if
> (gl_type == WINED3D_GL_RES_TYPE_RB) caps |=
> format->caps[WINED3D_GL_RES_TYPE_TEX_2D];".

Or add WINED3D_GL_RES_TYPE_RB only if WINED3D_BIND_SHADER_RESOURCE is 
missing, which should I think be identical. I'll modify accordingly.

> It's of course a little ugly that GL resource types bleed through into
> the common code in the first place. We may want to try to fix that at
> some point, but it's probably not quite trivial.

I guess the architecturally nice thing to do would be to report 
capability flags based on the bind flags, but that does feel somewhat 
awkward in its own ways...



More information about the wine-devel mailing list