wined3d: Add support for ARB_vertex_array_bgra.
This commit is contained in:
parent
96b150929b
commit
98568f0ba1
|
@ -483,7 +483,7 @@ static BOOL buffer_find_decl(struct wined3d_buffer *This)
|
||||||
* FLOAT16s if not supported. Also, we can't iterate over the array, so use macros to generate code for all
|
* FLOAT16s if not supported. Also, we can't iterate over the array, so use macros to generate code for all
|
||||||
* the attributes that our current fixed function pipeline implementation cares for.
|
* the attributes that our current fixed function pipeline implementation cares for.
|
||||||
*/
|
*/
|
||||||
BOOL support_d3dcolor = gl_info->supported[EXT_VERTEX_ARRAY_BGRA];
|
BOOL support_d3dcolor = gl_info->supported[ARB_VERTEX_ARRAY_BGRA];
|
||||||
ret = buffer_check_attribute(This, si, WINED3D_FFP_POSITION,
|
ret = buffer_check_attribute(This, si, WINED3D_FFP_POSITION,
|
||||||
TRUE, TRUE, FALSE, &stride_this_run, &float16_used) || ret;
|
TRUE, TRUE, FALSE, &stride_this_run, &float16_used) || ret;
|
||||||
ret = buffer_check_attribute(This, si, WINED3D_FFP_NORMAL,
|
ret = buffer_check_attribute(This, si, WINED3D_FFP_NORMAL,
|
||||||
|
|
|
@ -298,7 +298,7 @@ void device_stream_info_from_declaration(IWineD3DDeviceImpl *This,
|
||||||
stream_info->elements[idx].stream_idx = element->input_slot;
|
stream_info->elements[idx].stream_idx = element->input_slot;
|
||||||
stream_info->elements[idx].buffer_object = buffer_object;
|
stream_info->elements[idx].buffer_object = buffer_object;
|
||||||
|
|
||||||
if (!This->adapter->gl_info.supported[EXT_VERTEX_ARRAY_BGRA]
|
if (!This->adapter->gl_info.supported[ARB_VERTEX_ARRAY_BGRA]
|
||||||
&& element->format_desc->format == WINED3DFMT_B8G8R8A8_UNORM)
|
&& element->format_desc->format == WINED3DFMT_B8G8R8A8_UNORM)
|
||||||
{
|
{
|
||||||
stream_info->swizzle_map |= 1 << idx;
|
stream_info->swizzle_map |= 1 << idx;
|
||||||
|
@ -361,7 +361,7 @@ void device_stream_info_from_strided(const struct wined3d_gl_info *gl_info,
|
||||||
{
|
{
|
||||||
if (!stream_info->elements[i].format_desc) continue;
|
if (!stream_info->elements[i].format_desc) continue;
|
||||||
|
|
||||||
if (!gl_info->supported[EXT_VERTEX_ARRAY_BGRA]
|
if (!gl_info->supported[ARB_VERTEX_ARRAY_BGRA]
|
||||||
&& stream_info->elements[i].format_desc->format == WINED3DFMT_B8G8R8A8_UNORM)
|
&& stream_info->elements[i].format_desc->format == WINED3DFMT_B8G8R8A8_UNORM)
|
||||||
{
|
{
|
||||||
stream_info->swizzle_map |= 1 << i;
|
stream_info->swizzle_map |= 1 << i;
|
||||||
|
|
|
@ -82,6 +82,7 @@ static const struct {
|
||||||
{"GL_ARB_texture_non_power_of_two", ARB_TEXTURE_NON_POWER_OF_TWO, MAKEDWORD_VERSION(2, 0) },
|
{"GL_ARB_texture_non_power_of_two", ARB_TEXTURE_NON_POWER_OF_TWO, MAKEDWORD_VERSION(2, 0) },
|
||||||
{"GL_ARB_texture_rectangle", ARB_TEXTURE_RECTANGLE, 0 },
|
{"GL_ARB_texture_rectangle", ARB_TEXTURE_RECTANGLE, 0 },
|
||||||
{"GL_ARB_texture_rg", ARB_TEXTURE_RG, 0 },
|
{"GL_ARB_texture_rg", ARB_TEXTURE_RG, 0 },
|
||||||
|
{"GL_ARB_vertex_array_bgra", ARB_VERTEX_ARRAY_BGRA, 0 },
|
||||||
{"GL_ARB_vertex_blend", ARB_VERTEX_BLEND, 0 },
|
{"GL_ARB_vertex_blend", ARB_VERTEX_BLEND, 0 },
|
||||||
{"GL_ARB_vertex_buffer_object", ARB_VERTEX_BUFFER_OBJECT, 0 },
|
{"GL_ARB_vertex_buffer_object", ARB_VERTEX_BUFFER_OBJECT, 0 },
|
||||||
{"GL_ARB_vertex_program", ARB_VERTEX_PROGRAM, 0 },
|
{"GL_ARB_vertex_program", ARB_VERTEX_PROGRAM, 0 },
|
||||||
|
@ -1842,6 +1843,11 @@ static BOOL IWineD3DImpl_FillGLCaps(struct wined3d_driver_info *driver_info, str
|
||||||
TRACE_(d3d_caps)(" IMPLIED: ARB_depth_clamp support (by NV_depth_clamp).\n");
|
TRACE_(d3d_caps)(" IMPLIED: ARB_depth_clamp support (by NV_depth_clamp).\n");
|
||||||
gl_info->supported[ARB_DEPTH_CLAMP] = TRUE;
|
gl_info->supported[ARB_DEPTH_CLAMP] = TRUE;
|
||||||
}
|
}
|
||||||
|
if (!gl_info->supported[ARB_VERTEX_ARRAY_BGRA] && gl_info->supported[EXT_VERTEX_ARRAY_BGRA])
|
||||||
|
{
|
||||||
|
TRACE_(d3d_caps)(" IMPLIED: ARB_vertex_array_bgra support (by EXT_vertex_array_bgra).\n");
|
||||||
|
gl_info->supported[ARB_VERTEX_ARRAY_BGRA] = TRUE;
|
||||||
|
}
|
||||||
if (gl_info->supported[NV_TEXTURE_SHADER2])
|
if (gl_info->supported[NV_TEXTURE_SHADER2])
|
||||||
{
|
{
|
||||||
if (gl_info->supported[NV_REGISTER_COMBINERS])
|
if (gl_info->supported[NV_REGISTER_COMBINERS])
|
||||||
|
|
|
@ -334,7 +334,7 @@ static inline void send_attribute(IWineD3DDeviceImpl *This, WINED3DFORMAT format
|
||||||
GL_EXTCALL(glVertexAttrib4ubvARB(index, ptr));
|
GL_EXTCALL(glVertexAttrib4ubvARB(index, ptr));
|
||||||
break;
|
break;
|
||||||
case WINED3DFMT_B8G8R8A8_UNORM:
|
case WINED3DFMT_B8G8R8A8_UNORM:
|
||||||
if (gl_info->supported[EXT_VERTEX_ARRAY_BGRA])
|
if (gl_info->supported[ARB_VERTEX_ARRAY_BGRA])
|
||||||
{
|
{
|
||||||
const DWORD *src = ptr;
|
const DWORD *src = ptr;
|
||||||
DWORD c = *src & 0xff00ff00;
|
DWORD c = *src & 0xff00ff00;
|
||||||
|
|
|
@ -4167,7 +4167,7 @@ static inline void loadNumberedArrays(IWineD3DStateBlockImpl *stateblock,
|
||||||
GL_EXTCALL(glVertexAttrib4NubvARB(i, ptr));
|
GL_EXTCALL(glVertexAttrib4NubvARB(i, ptr));
|
||||||
break;
|
break;
|
||||||
case WINED3DFMT_B8G8R8A8_UNORM:
|
case WINED3DFMT_B8G8R8A8_UNORM:
|
||||||
if (gl_info->supported[EXT_VERTEX_ARRAY_BGRA])
|
if (gl_info->supported[ARB_VERTEX_ARRAY_BGRA])
|
||||||
{
|
{
|
||||||
const DWORD *src = (const DWORD *)ptr;
|
const DWORD *src = (const DWORD *)ptr;
|
||||||
DWORD c = *src & 0xff00ff00;
|
DWORD c = *src & 0xff00ff00;
|
||||||
|
@ -4544,7 +4544,7 @@ static void streamsrc(DWORD state, IWineD3DStateBlockImpl *stateblock, struct wi
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
WORD slow_mask = (1 << WINED3D_FFP_PSIZE);
|
WORD slow_mask = (1 << WINED3D_FFP_PSIZE);
|
||||||
slow_mask |= -!gl_info->supported[EXT_VERTEX_ARRAY_BGRA]
|
slow_mask |= -!gl_info->supported[ARB_VERTEX_ARRAY_BGRA]
|
||||||
& ((1 << WINED3D_FFP_DIFFUSE) | (1 << WINED3D_FFP_SPECULAR));
|
& ((1 << WINED3D_FFP_DIFFUSE) | (1 << WINED3D_FFP_SPECULAR));
|
||||||
|
|
||||||
if (fixup || (!dataLocations->position_transformed
|
if (fixup || (!dataLocations->position_transformed
|
||||||
|
|
|
@ -1098,7 +1098,7 @@ static void apply_format_fixups(struct wined3d_gl_info *gl_info)
|
||||||
gl_info->gl_formats[idx].heightscale = 1.5f;
|
gl_info->gl_formats[idx].heightscale = 1.5f;
|
||||||
gl_info->gl_formats[idx].color_fixup = create_yuv_fixup_desc(YUV_FIXUP_YV12);
|
gl_info->gl_formats[idx].color_fixup = create_yuv_fixup_desc(YUV_FIXUP_YV12);
|
||||||
|
|
||||||
if (gl_info->supported[EXT_VERTEX_ARRAY_BGRA])
|
if (gl_info->supported[ARB_VERTEX_ARRAY_BGRA])
|
||||||
{
|
{
|
||||||
idx = getFmtIdx(WINED3DFMT_B8G8R8A8_UNORM);
|
idx = getFmtIdx(WINED3DFMT_B8G8R8A8_UNORM);
|
||||||
gl_info->gl_formats[idx].gl_vtx_format = GL_BGRA;
|
gl_info->gl_formats[idx].gl_vtx_format = GL_BGRA;
|
||||||
|
|
|
@ -1764,6 +1764,7 @@ typedef enum wined3d_gl_extension
|
||||||
ARB_TEXTURE_NON_POWER_OF_TWO,
|
ARB_TEXTURE_NON_POWER_OF_TWO,
|
||||||
ARB_TEXTURE_RECTANGLE,
|
ARB_TEXTURE_RECTANGLE,
|
||||||
ARB_TEXTURE_RG,
|
ARB_TEXTURE_RG,
|
||||||
|
ARB_VERTEX_ARRAY_BGRA,
|
||||||
ARB_VERTEX_BLEND,
|
ARB_VERTEX_BLEND,
|
||||||
ARB_VERTEX_BUFFER_OBJECT,
|
ARB_VERTEX_BUFFER_OBJECT,
|
||||||
ARB_VERTEX_PROGRAM,
|
ARB_VERTEX_PROGRAM,
|
||||||
|
|
Loading…
Reference in New Issue