bool r600_common_screen_init(struct r600_common_screen *rscreen,
			     struct radeon_winsys *ws)
{
	char family_name[32] = {}, llvm_string[32] = {}, kernel_version[128] = {};
	struct utsname uname_data;
	const char *chip_name;

	ws->query_info(ws, &rscreen->info);
	rscreen->ws = ws;

	if ((chip_name = r600_get_marketing_name(ws)))
		snprintf(family_name, sizeof(family_name), "%s / ",
			 r600_get_family_name(rscreen) + 4);
	else
		chip_name = r600_get_family_name(rscreen);

	if (uname(&uname_data) == 0)
		snprintf(kernel_version, sizeof(kernel_version),
			 " / %s", uname_data.release);

	if (HAVE_LLVM > 0) {
		snprintf(llvm_string, sizeof(llvm_string),
			 ", LLVM %i.%i.%i", (HAVE_LLVM >> 8) & 0xff,
			 HAVE_LLVM & 0xff, MESA_LLVM_VERSION_PATCH);
	}
static void r600_disk_cache_create(struct r600_common_screen *rscreen)
{
	/* Don't use the cache if shader dumping is enabled. */
	if (rscreen->debug_flags & DBG_ALL_SHADERS)
		return;

	uint32_t mesa_timestamp;
	if (disk_cache_get_function_timestamp(r600_disk_cache_create,
					      &mesa_timestamp)) {
		char *timestamp_str;
		int res = -1;

		res = asprintf(&timestamp_str, "%u",mesa_timestamp);
		if (res != -1) {
			/* These flags affect shader compilation. */
			uint64_t shader_debug_flags =
				rscreen->debug_flags &
				(DBG_FS_CORRECT_DERIVS_AFTER_KILL |
				 DBG_UNSAFE_MATH);

			rscreen->disk_shader_cache =
				disk_cache_create(r600_get_family_name(rscreen),
						  timestamp_str,
						  shader_debug_flags);
			free(timestamp_str);
		}
	}
}
Exemple #3
0
static const char* r600_get_name(struct pipe_screen* pscreen)
{
	struct r600_screen *rscreen = (struct r600_screen *)pscreen;

	return r600_get_family_name(rscreen->b.family);
}