gl: Move vertex processing to the GPU

- Significant gains from greatly reduced CPU work
- Also reorders command submission in end() to improve throughput

- Refactors most of the vertex buffer handling
- All vertex processing is moved GPU side
This commit is contained in:
kd-11 2017-07-31 14:38:28 +03:00
parent e668ecd453
commit d54c2dd39a
21 changed files with 1025 additions and 1149 deletions

View file

@ -459,20 +459,6 @@ namespace rsx
rsx->m_textures_dirty[index] = true;
}
};
template<u32 index>
struct set_vertex_array_dirty_bit
{
static void impl(thread* rsx, u32, u32)
{
rsx->m_vertex_attribs_changed = true;
}
};
void set_idbuf_dirty_bit(thread* rsx, u32, u32)
{
rsx->m_index_buffer_changed = true;
}
}
namespace nv308a
@ -1544,8 +1530,6 @@ namespace rsx
bind_range<NV4097_SET_TEXTURE_FILTER, 8, 16, nv4097::set_texture_dirty_bit>();
bind_range<NV4097_SET_TEXTURE_IMAGE_RECT, 8, 16, nv4097::set_texture_dirty_bit>();
bind_range<NV4097_SET_TEXTURE_BORDER_COLOR, 8, 16, nv4097::set_texture_dirty_bit>();
bind_range<NV4097_SET_VERTEX_DATA_ARRAY_OFFSET, 1, 16, nv4097::set_vertex_array_dirty_bit>();
bind<NV4097_SET_INDEX_ARRAY_ADDRESS, nv4097::set_idbuf_dirty_bit>();
bind<NV4097_SET_RENDER_ENABLE, nv4097::set_render_mode>();
bind<NV4097_SET_ZCULL_EN, nv4097::set_zcull_render_enable>();
bind<NV4097_SET_ZCULL_STATS_ENABLE, nv4097::set_zcull_stats_enable>();