示例#1
0
int VertexLoaderX64::RunVertices(DataReader src, DataReader dst, int count)
{
	m_numLoadedVertices += count;
	return ((int (*)(u8*, u8*, int, const void*))region)(
		src.GetPointer(),
		dst.GetPointer(),
		count,
		memory_base_ptr);
}
示例#2
0
int VertexLoader::RunVertices(DataReader src, DataReader dst, int count)
{
	g_vertex_manager_write_ptr = dst.GetPointer();
	g_video_buffer_read_ptr = src.GetPointer();

	m_numLoadedVertices += count;
	m_skippedVertices = 0;

	for (m_counter = count - 1; m_counter >= 0; m_counter--)
	{
		m_tcIndex = 0;
		m_colIndex = 0;
		m_texmtxwrite = m_texmtxread = 0;
		for (int i = 0; i < m_numPipelineStages; i++)
			m_PipelineStages[i](this);
		PRIM_LOG("\n");
	}

	return count - m_skippedVertices;
}
示例#3
0
int VertexLoader::RunVertices(DataReader src, DataReader dst, int count, int primitive)
{
	g_vertex_manager_write_ptr = dst.GetPointer();
	g_video_buffer_read_ptr = src.GetPointer();

	m_numLoadedVertices += count;
	m_skippedVertices = 0;

	// Prepare bounding box
	if (!g_ActiveConfig.backend_info.bSupportsBBox)
		BoundingBox::Prepare(m_vat, primitive, m_VtxDesc, m_native_vtx_decl);

	for (int s = 0; s < count; s++)
	{
		m_tcIndex = 0;
		m_colIndex = 0;
		m_texmtxwrite = m_texmtxread = 0;
		for (int i = 0; i < m_numPipelineStages; i++)
			m_PipelineStages[i](this);
		PRIM_LOG("\n");
	}

	return count - m_skippedVertices;
}
示例#4
0
	int RunVertices(DataReader src, DataReader dst, int count) override
	{
		buffer_a.resize(count * a->m_native_vtx_decl.stride + 4);
		buffer_b.resize(count * b->m_native_vtx_decl.stride + 4);

		int count_a = a->RunVertices(src, DataReader(buffer_a.data(), buffer_a.data()+buffer_a.size()), count);
		int count_b = b->RunVertices(src, DataReader(buffer_b.data(), buffer_b.data()+buffer_b.size()), count);

		if (count_a != count_b)
			ERROR_LOG(VIDEO, "The two vertex loaders have loaded a different amount of vertices (a: %d, b: %d).", count_a, count_b);

		if (memcmp(buffer_a.data(), buffer_b.data(), std::min(count_a, count_b) * m_native_vtx_decl.stride))
			ERROR_LOG(VIDEO, "The two vertex loaders have loaded different data "
			                 "(guru meditation 0x%016" PRIx64 ", 0x%08x, 0x%08x, 0x%08x).",
			                 m_VtxDesc.Hex, m_vat.g0.Hex, m_vat.g1.Hex, m_vat.g2.Hex);

		memcpy(dst.GetPointer(), buffer_a.data(), count_a * m_native_vtx_decl.stride);
		m_numLoadedVertices += count;
		return count_a;
	}
示例#5
0
int VertexLoaderX64::RunVertices(DataReader src, DataReader dst, int count, int primitive)
{
	m_numLoadedVertices += count;
	return ((int (*)(u8* src, u8* dst, int count))region)(src.GetPointer(), dst.GetPointer(), count);
}