mirror of
https://github.com/RPCS3/rpcs3.git
synced 2025-03-29 22:20:48 +00:00
rsx: Use non-owning container to ellide a derpy allocation with msvc
This commit is contained in:
parent
f2155b49e2
commit
1b8a69154f
@ -835,7 +835,9 @@ void GLGSRender::load_program_env()
|
|||||||
auto mapping = m_transform_constants_buffer->alloc_from_heap(static_cast<u32>(transform_constants_size), m_uniform_buffer_offset_align);
|
auto mapping = m_transform_constants_buffer->alloc_from_heap(static_cast<u32>(transform_constants_size), m_uniform_buffer_offset_align);
|
||||||
auto buf = static_cast<u8*>(mapping.first);
|
auto buf = static_cast<u8*>(mapping.first);
|
||||||
|
|
||||||
const std::vector<u16>& constant_ids = (transform_constants_size == 8192) ? std::vector<u16>{} : m_vertex_prog->constant_ids;
|
const auto constant_ids = (transform_constants_size == 8192)
|
||||||
|
? std::span<const u16>{}
|
||||||
|
: std::span<const u16>(m_vertex_prog->constant_ids);
|
||||||
fill_vertex_program_constants_data(buf, constant_ids);
|
fill_vertex_program_constants_data(buf, constant_ids);
|
||||||
|
|
||||||
m_transform_constants_buffer->bind_range(GL_VERTEX_CONSTANT_BUFFERS_BIND_SLOT, mapping.second, static_cast<u32>(transform_constants_size));
|
m_transform_constants_buffer->bind_range(GL_VERTEX_CONSTANT_BUFFERS_BIND_SLOT, mapping.second, static_cast<u32>(transform_constants_size));
|
||||||
|
@ -1077,7 +1077,7 @@ namespace rsx
|
|||||||
* Fill buffer with vertex program constants.
|
* Fill buffer with vertex program constants.
|
||||||
* Buffer must be at least 512 float4 wide.
|
* Buffer must be at least 512 float4 wide.
|
||||||
*/
|
*/
|
||||||
void thread::fill_vertex_program_constants_data(void* buffer, const std::vector<u16>& reloc_table)
|
void thread::fill_vertex_program_constants_data(void* buffer, const std::span<const u16>& reloc_table)
|
||||||
{
|
{
|
||||||
if (!reloc_table.empty()) [[ likely ]]
|
if (!reloc_table.empty()) [[ likely ]]
|
||||||
{
|
{
|
||||||
|
@ -493,7 +493,7 @@ namespace rsx
|
|||||||
* Fill buffer with vertex program constants.
|
* Fill buffer with vertex program constants.
|
||||||
* Relocation table allows to do a partial fill with only selected registers.
|
* Relocation table allows to do a partial fill with only selected registers.
|
||||||
*/
|
*/
|
||||||
void fill_vertex_program_constants_data(void* buffer, const std::vector<u16>& reloc_table);
|
void fill_vertex_program_constants_data(void* buffer, const std::span<const u16>& reloc_table);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Fill buffer with fragment rasterization state.
|
* Fill buffer with fragment rasterization state.
|
||||||
|
@ -2081,8 +2081,11 @@ void VKGSRender::load_program_env()
|
|||||||
auto mem = m_transform_constants_ring_info.alloc<1>(utils::align(transform_constants_size, alignment));
|
auto mem = m_transform_constants_ring_info.alloc<1>(utils::align(transform_constants_size, alignment));
|
||||||
auto buf = m_transform_constants_ring_info.map(mem, transform_constants_size);
|
auto buf = m_transform_constants_ring_info.map(mem, transform_constants_size);
|
||||||
|
|
||||||
const std::vector<u16>& constant_ids = (transform_constants_size == 8192) ? std::vector<u16>{} : m_vertex_prog->constant_ids;
|
const auto constant_ids = (transform_constants_size == 8192)
|
||||||
|
? std::span<const u16>{}
|
||||||
|
: std::span<const u16>(m_vertex_prog->constant_ids);
|
||||||
fill_vertex_program_constants_data(buf, constant_ids);
|
fill_vertex_program_constants_data(buf, constant_ids);
|
||||||
|
|
||||||
m_transform_constants_ring_info.unmap();
|
m_transform_constants_ring_info.unmap();
|
||||||
m_vertex_constants_buffer_info = { m_transform_constants_ring_info.heap->value, mem, transform_constants_size };
|
m_vertex_constants_buffer_info = { m_transform_constants_ring_info.heap->value, mem, transform_constants_size };
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user