Posts: 5.076
Threads: 18
Joined: Oct 2010
Reputation:
154
gregory is making a lot of progress recently... Maybe you don't even need to wait one year =D
Sponsored links
Posts: 24
Threads: 2
Joined: Mar 2012
Reputation:
0
I'll look forward to it I was betting that all the slowdowns were due to limited hardware acceleration... I suppose you can still argue about the gaps:
Code: INFO: GL_ARB_separate_shader_objects is not supported
INFO: GL_ARB_gpu_shader5 is not supported
INFO: GL_ARB_shader_image_load_store is not supported
INFO: GL_ARB_clear_texture is not supported
INFO: GL_ARB_buffer_storage is not supported
INFO: GL_ARB_shader_subroutine is not supported
INFO: GL_ARB_explicit_uniform_location is not supported
INFO: GL_ARB_texture_storage is supported
INFO: GL_ARB_shading_language_420pack is supported
INFO: GL_ARB_multi_bind is not supported
INFO: GL_ARB_bindless_texture is not supported
INFO: GL_NV_depth_buffer_float is not supported
I guess those are OpenGL4 calls.
Played a bit of Gitaroo Man for the first time in a decade. Framerate needs to be steady 50 or 60fps to play it right, but it was pretty cool anyway.
Posts: 6.069
Threads: 68
Joined: May 2010
Reputation:
167
Location: Grenoble, France
(05-24-2014, 12:43 AM)PastGamer Wrote: Once I sorted that out, I was able to run pcsx normally after some SPU2X configuration I would like to donate £20 to you - do you have a Paypal address? Thanks for all your help - running this in the host OS is definitely an improvement. I'm glad it is running now. I personally don't have paypal but you can give a donation to the project. Your generosity is deeply appreciated.
http://forums.pcsx2.net/donate.php
(05-24-2014, 12:43 AM)PastGamer Wrote: I'm very disappointed that even with OpenGL3.3, pcsx2 release build still fails to run GTA3 at normal framerate, and when smoke is on the screen, can easily get down to 25fps. In Final Fantasy X, Shiva's summon when she descends into the ice crystal slows down considerably too - I guess I'll need to wait another year or so to see if things have sped up enough to consider it a PlayStation 2 replacement (both pcsx2 and radeon improvements presumably). Well nvidia driver is much more faster than Amd (catalyst) driver. Catalyst is faster than Radeon. Worst radeon is often CPU limited in Phoronix benchmark. My opengl is far from perfect but I can't do anythings for driver.
Quote:gregory is making a lot of progress recently... Maybe you don't even need to wait one year =D
Well gregory is working on others interesting topic at the moment. And Gregory doesn't have any free time recently due to a crazy hardware project at work
Posts: 24
Threads: 2
Joined: Mar 2012
Reputation:
0
Donation made, although it really ought to go direct to you.
OK, I have been following Phoronix for a while now and the appearance is that radeon is supposed to almost be as fast as Catalyst for r600g - which then begs the question of how much faster NVIDIA's proprietary code is. I'll look out for comparisons in the future - this machine is a practical libre setup, so I'll never be running proprietary graphics drivers here.
Just out of interest, are you able to play GTA3 at full speed driving a beat up car smoking black smoke at the front?
Posts: 6.069
Threads: 68
Joined: May 2010
Reputation:
167
Location: Grenoble, France
(05-24-2014, 11:38 AM)PastGamer Wrote: Donation made, although it really ought to go direct to you. Thanks you very much.
(05-24-2014, 11:38 AM)PastGamer Wrote: OK, I have been following Phoronix for a while now and the appearance is that radeon is supposed to almost be as fast as Catalyst for r600g - which then begs the question of how much faster NVIDIA's proprietary code is. I'll look out for comparisons in the future - this machine is a practical libre setup, so I'll never be running proprietary graphics drivers here.
Just out of interest, are you able to play GTA3 at full speed driving a beat up car smoking black smoke at the front? Hum I didn't check recent benchmark. Be aware that you need to measure the CPU perf of the driver, not GPU jobs. PCSX2 barely used the GPU actually (except if you set a massive internal resolutions). When I switched from an hd5770 to a GTX760, I got a 10-15 fps increase on colin mcrae 3 ! And I think it is only related to the CPU driver overhead. I'm sure you have a local friend to do some tests
Posts: 1
Threads: 0
Joined: Nov 2021
Reputation:
0
(08-24-2012, 08:15 PM)gregory Wrote: Here a summary thread of the supported/unsupported feature of open source drivers on linux. Nvidia and AMD proprietary driver have full support of opengl extensions. It is recommended to use proprietary drivers.
Steam stat on GPU distribution:
http://store.steampowered.com/hwsurvey/v...?sort=nameio games
<hr>
TODO: make a nice array of the opengl extension. The idea will be to check the status on mesa 10.3 (mostly on intel and AMD, nvidia have less issue on linux )
Just install Mesa 10.6
OpenGL 4 extensions (that are supported by opengl3 HW aka DX10 card):
ARB_separate_shader_objects: mesa 10.3 (buggy unfortunately)
ARB_copy_image: (not sure this one is working on GL3 HW) mesa 10.3 (intel)
Extensions that might be required by future version
ARB_vertex_attrib_binding: 10.3
ARB_clear_texture:
ARB_multi_bind: 10.3
ARB_invalidate_subdata: ?
ARB_bindless_texture: ? (opengl 5?)
dx11 compatibility
dsa: easier access to object
<hr>
For intel GPU, you can get extension supported by mesa in
Code: src/mesa/drivers/dri/intel/intel_extensions.
<table><tr>
<td>Generation</td>
<td>Name</td>
</tr>
<tr>
<td>7</td>
<td>ivy bridge</td>
</tr>
<tr>
<td>6</td>
<td>sandy bridge</td>
</tr>
<tr>
<td>5</td>
<td>ironlake alias HD graphics</td>
</tr>
<tr>
<td>4</td>
<td>latest GMA alias GMAX3n00, GMA4500, GMAX4500</td>
</tr>
<tr>
<td>3</td>
<td>older stuff and atom....</td>
</tr>
</table>
Radeon driver is a bit more tricky, you need to check gallium capability first:
Code: src/mesa/state_tracker/st_extensions.c
Then capability in
Code: src/gallium/drivers/r600/r600_pipe.c
src/gallium/drivers/r300/r300_screen.c
<hr>
Expert only
Solution to easily switch between radeon and catalyst driver:
Create /etc/grub.d/40_linux_multi_GPU
It is mostly a copy of /etc/grub.d/10_linux which create 2 additional entries to select the kernel GPU driver (radeon or fglrx).
Code: #! /bin/sh
set -e
# Script was updated to duplicate linux entry with additional modprobe options
# 1/ modprobe.blacklist=drm,radeon
# 2/ modprobe.blacklist=fglrx
# grub-mkconfig helper script.
# Copyright (C) 2006,2007,2008,2009,2010 Free Software Foundation, Inc.
#
# GRUB is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# GRUB is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with GRUB. If not, see <http://www.gnu.org/licenses/>.
prefix="/usr"
exec_prefix="${prefix}"
datarootdir="${prefix}/share"
. "${datarootdir}/grub/grub-mkconfig_lib"
export TEXTDOMAIN=grub
export TEXTDOMAINDIR="${datarootdir}/locale"
CLASS="--class gnu-linux --class gnu --class os"
if [ "x${GRUB_DISTRIBUTOR}" = "x" ] ; then
OS=GNU/Linux
else
OS="${GRUB_DISTRIBUTOR} GNU/Linux"
CLASS="--class $(echo ${GRUB_DISTRIBUTOR} | tr 'A-Z' 'a-z' | cut -d' ' -f1) ${CLASS}"
fi
# loop-AES arranges things so that /dev/loop/X can be our root device, but
# the initrds that Linux uses don't like that.
case ${GRUB_DEVICE} in
/dev/loop/*|/dev/loop[0-9])
GRUB_DEVICE=`losetup ${GRUB_DEVICE} | sed -e "s/^[^(]*(\([^)]\+\)).*/\1/"`
# We can't cope with devices loop-mounted from files here.
case ${GRUB_DEVICE} in
/dev/*) ;;
*) exit 0 ;;
esac
;;
esac
if [ "x${GRUB_DEVICE_UUID}" = "x" ] || [ "x${GRUB_DISABLE_LINUX_UUID}" = "xtrue" ] \
|| ! test -e "/dev/disk/by-uuid/${GRUB_DEVICE_UUID}" \
|| uses_abstraction "${GRUB_DEVICE}" lvm; then
LINUX_ROOT_DEVICE=${GRUB_DEVICE}
else
LINUX_ROOT_DEVICE=UUID=${GRUB_DEVICE_UUID}
fi
if [ "x`${grub_probe} --device ${GRUB_DEVICE} --target=fs 2>/dev/null || true`" = xbtrfs ] \
|| [ "x`stat -f --printf=%T /`" = xbtrfs ]; then
rootsubvol="`make_system_path_relative_to_its_root /`"
rootsubvol="${rootsubvol#/}"
if [ "x${rootsubvol}" != x ]; then
GRUB_CMDLINE_LINUX="rootflags=subvol=${rootsubvol} ${GRUB_CMDLINE_LINUX}"
fi
fi
linux_entry ()
{
os="$1"
version="$2"
recovery="$3"
args="$4"
modprobe="$5"
if [ x$modprobe = xfglrx ]; then
title="$(gettext_quoted "%s, with Linux %s (free radeon driver)")"
mod_opt="modprobe.blacklist=${modprobe} fglrx.disable=1"
else
title="$(gettext_quoted "%s, with Linux %s (fglrx driver)")"
mod_opt="modprobe.blacklist=${modprobe} radeon.disable=1 drm.disable=1"
fi
printf "menuentry '${title}' ${CLASS} {\n" "${os}" "${version}"
if ! ${recovery} ; then
save_default_entry | sed -e "s/^/\t/"
fi
# Use ELILO's generic "efifb" when it's known to be available.
# FIXME: We need an interface to select vesafb in case efifb can't be used.
if [ "x$GRUB_GFXPAYLOAD_LINUX" = x ]; then
cat << EOF
load_video
EOF
else
if [ "x$GRUB_GFXPAYLOAD_LINUX" != xtext ]; then
cat << EOF
load_video
EOF
fi
cat << EOF
set gfxpayload=$GRUB_GFXPAYLOAD_LINUX
EOF
fi
cat << EOF
insmod gzio
EOF
if [ x$dirname = x/ ]; then
if [ -z "${prepare_root_cache}" ]; then
prepare_root_cache="$(prepare_grub_to_access_device ${GRUB_DEVICE} | sed -e "s/^/\t/")"
fi
printf '%s\n' "${prepare_root_cache}"
else
if [ -z "${prepare_boot_cache}" ]; then
prepare_boot_cache="$(prepare_grub_to_access_device ${GRUB_DEVICE_BOOT} | sed -e "s/^/\t/")"
fi
printf '%s\n' "${prepare_boot_cache}"
fi
message="$(gettext_printf "Loading Linux %s ..." ${version})"
cat << EOF
echo '$message'
linux ${rel_dirname}/${basename} root=${linux_root_device_thisversion} ro ${mod_opt} ${args}
EOF
if test -n "${initrd}" ; then
message="$(gettext_printf "Loading initial ramdisk ...")"
cat << EOF
echo '$message'
initrd ${rel_dirname}/${initrd}
EOF
fi
cat << EOF
}
EOF
}
case x`uname -m` in
xi?86 | xx86_64)
list=`for i in /boot/vmlinuz-* /vmlinuz-* /boot/kernel-* ; do
if grub_file_is_not_garbage "$i" ; then echo -n "$i " ; fi
done` ;;
*)
list=`for i in /boot/vmlinuz-* /boot/vmlinux-* /vmlinuz-* /vmlinux-* /boot/kernel-* ; do
if grub_file_is_not_garbage "$i" ; then echo -n "$i " ; fi
done` ;;
esac
prepare_boot_cache=
prepare_root_cache=
while [ "x$list" != "x" ] ; do
linux=`version_find_latest $list`
echo "Found linux image: $linux" >&2
basename=`basename $linux`
dirname=`dirname $linux`
rel_dirname=`make_system_path_relative_to_its_root $dirname`
version=`echo $basename | sed -e "s,^[^0-9]*-,,g"`
alt_version=`echo $version | sed -e "s,\.old$,,g"`
linux_root_device_thisversion="${LINUX_ROOT_DEVICE}"
initrd=
for i in "initrd.img-${version}" "initrd-${version}.img" \
"initrd-${version}" "initramfs-${version}.img" \
"initrd.img-${alt_version}" "initrd-${alt_version}.img" \
"initrd-${alt_version}" "initramfs-${alt_version}.img" \
"initramfs-genkernel-${version}" \
"initramfs-genkernel-${alt_version}"; do
if test -e "${dirname}/${i}" ; then
initrd="$i"
break
fi
done
config=
for i in "${dirname}/config-${version}" "${dirname}/config-${alt_version}" "/etc/kernels/kernel-config-${version}" ; do
if test -e "${i}" ; then
config="${i}"
break
fi
done
initramfs=
if test -n "${config}" ; then
initramfs=`grep CONFIG_INITRAMFS_SOURCE= "${config}" | cut -f2 -d= | tr -d \"`
fi
if test -n "${initrd}" ; then
echo "Found initrd image: ${dirname}/${initrd}" >&2
elif test -z "${initramfs}" ; then
# "UUID=" magic is parsed by initrd or initramfs. Since there's
# no initrd or builtin initramfs, it can't work here.
linux_root_device_thisversion=${GRUB_DEVICE}
fi
linux_entry "${OS}" "${version}" false "${GRUB_CMDLINE_LINUX} ${GRUB_CMDLINE_LINUX_DEFAULT}" "drm,radeon"
linux_entry "${OS}" "${version}" false "${GRUB_CMDLINE_LINUX} ${GRUB_CMDLINE_LINUX_DEFAULT}" "fglrx"
list=`echo $list | tr ' ' '\n' | grep -vx $linux | tr '\n' ' '`
done
Wrapper to launch proper X with correct GL configuration (debian). The script need to be executed by the Display Manager like lightdm.
Code: #!/bin/sh
if `lsmod | grep -q "^fglrx\b"`; then
update-alternatives --set glx /usr/lib/fglrx
exec /usr/bin/X -config xorg-fglrx.conf -nolisten tcp "$@"
else
update-alternatives --set glx /usr/lib/mesa-diverted
exec /usr/bin/X -config xorg-radeon.conf -nolisten tcp "$@"
fi
For an unknow reason, on my PC I need to force the loading of the radeon driver.
So add the following line at the end of /etc/modules
Code: # Force the loading of radeon in the boot except if it is disabled
# I think I got some weird mix between UMS/KMS
# UMS is dropped in ddx(7.X.X) and Kernel 3.9 (UMS is deprecated) (or maybe: configure the kernel => CONFIG_DRM_RADEON_KMS)
# Note: When it works better, disable could potentially be cleaned of
# /etc/grub.d/40_linux_multi_GPU
radeon
thanks very much!
|