[Piglit] [PATCH] amd_pinned_memory: Port to Windows.

Jose Fonseca jfonseca at vmware.com
Fri Feb 20 14:01:45 PST 2015


We might want to have some OS abstractions for aligned memory if more
tests need it, but go for a simple solution for now, as it seems a
special case.
---
 tests/spec/amd_pinned_memory/test.c | 20 +++++++++++++++++++-
 1 file changed, 19 insertions(+), 1 deletion(-)

diff --git a/tests/spec/amd_pinned_memory/test.c b/tests/spec/amd_pinned_memory/test.c
index 239e620..a2d8b7e 100644
--- a/tests/spec/amd_pinned_memory/test.c
+++ b/tests/spec/amd_pinned_memory/test.c
@@ -136,13 +136,24 @@ enum piglit_result piglit_display(void)
 {
 	GLboolean pass = GL_TRUE;
 	float white[] = {1, 1, 1, 1};
-	unsigned i, vbo, size, page_size;
+	unsigned i, vbo, size;
+	size_t page_size;
 	GLsync fence = 0;
 	float x, y, *mem;
 
+#ifdef _WIN32
+	SYSTEM_INFO system_info;
+	GetSystemInfo(&system_info);
+	page_size = system_info.dwPageSize;
+#else
 	page_size = sysconf(_SC_PAGESIZE);
+#endif
 	size = ALIGN(NUM_PRIMS * TRI_SIZE, page_size);
+#ifdef _WIN32
+	mem = _aligned_malloc(size, page_size);
+#else
 	mem = aligned_alloc(page_size, size);
+#endif
 
 	glClear(GL_COLOR_BUFFER_BIT);
 	glEnableClientState(GL_VERTEX_ARRAY);
@@ -211,6 +222,13 @@ enum piglit_result piglit_display(void)
 	glDeleteBuffers(1, &vbo);
 	if (!piglit_check_gl_error(GL_NO_ERROR))
 		piglit_report_result(PIGLIT_FAIL);
+
+#ifdef _WIN32
+	_aligned_free(mem);
+#else
+	free(mem);
+#endif
+
 	piglit_present_results();
 
 	return pass ? PIGLIT_PASS : PIGLIT_FAIL;
-- 
2.1.0



More information about the Piglit mailing list