http://ogldev.atspace.co.uk/index.html
http://www.arcsynthesis.org/gltut/index.html -- book
Tuesday, January 3, 2012
Thursday, December 29, 2011
GCC vector intrinsics example
typedef int v4si __attribute__ ((vector_size(16)));
typedef int RGBA[4];
void diff(const RGBA & a, const RGBA & b, RGBA & out) {
#if 0
for(int i = 0; i < 4; ++i)
out[i] = a[i] - b[i];
for(int i = 0; i < 4; ++i) {
int v = out[i];
if (v < 0) v =0;
if (v > 255) v = 255;
out[i] = v;
}
#else
v4si va = *(v4si*)a;//{a[0], a[1], a[2], a[3]};
v4si vb = *(v4si*)b;//{b[0], b[1], b[2], b[3]};
v4si vr;
vr = __builtin_ia32_psubd128(va, vb);
*(v4si*)(&out[0]) = vr;
#endif
}
typedef int RGBA[4];
void diff(const RGBA & a, const RGBA & b, RGBA & out) {
#if 0
for(int i = 0; i < 4; ++i)
out[i] = a[i] - b[i];
for(int i = 0; i < 4; ++i) {
int v = out[i];
if (v < 0) v =0;
if (v > 255) v = 255;
out[i] = v;
}
#else
v4si va = *(v4si*)a;//{a[0], a[1], a[2], a[3]};
v4si vb = *(v4si*)b;//{b[0], b[1], b[2], b[3]};
v4si vr;
vr = __builtin_ia32_psubd128(va, vb);
*(v4si*)(&out[0]) = vr;
#endif
}
Wednesday, December 28, 2011
Integer division optimization
The idea is to replace division with multiplication and bit shift.
Found it interesting (GCC does it for you, but FPC not):
http://www.codeproject.com/KB/cs/FindMulShift.aspx
http://libdivide.com/
Found it interesting (GCC does it for you, but FPC not):
http://www.codeproject.com/KB/cs/FindMulShift.aspx
http://libdivide.com/
Thursday, December 22, 2011
Memory Leaks
Nice article on the topic: http://www.delphibasics.co.uk/Article.asp?Name=Memory
By the way, Pascal's manner of declaring variables in a single place ('var section') seems unproductive for C/C++ fans but it is very helpful in tracking resources (class references) -- look for the known block in a function and check if all of the references are properly freed on return.
By the way, Pascal's manner of declaring variables in a single place ('var section') seems unproductive for C/C++ fans but it is very helpful in tracking resources (class references) -- look for the known block in a function and check if all of the references are properly freed on return.
Saturday, December 17, 2011
Lazarus problem solution for Ubuntu 11.10
"
Lazarus applications have problems to run on latest Ubuntu 11.10 where the reason is new Taskbar menu and scrollbar.
To get application running like on older Ubuntu we have to remove some functionality from Ubuntu using by this command:
sudo apt-get remove appmenu-gtk3 appmenu-gtk appmenu-qt
liboverlay-scrollbar-0.2-0 "
http://62.166.198.202/view.php?id=20520
To get application running like on older Ubuntu we have to remove some functionality from Ubuntu using by this command:
sudo apt-get remove appmenu-gtk3 appmenu-gtk appmenu-qt
liboverlay-scrollbar-0.2-0 "
http://62.166.198.202/view.php?id=20520
Monday, December 12, 2011
LG Optimus One P500 factory menu
Working solution for GPS problem for LG P500 Optimus after update to Gingerbread lies in hidden menu which can be opened with 3845#*500# combination in Dialer. Then choose GPS Test > gpsApp Main Menu > Settings > GPS Type and choose Standalone instead of A-GPS (as shown on picture).
http://muj.trus.cz/post/9622985470/working-solution-for-gps-problem-for-lg-p500
http://muj.trus.cz/post/9622985470/working-solution-for-gps-problem-for-lg-p500
Subscribe to:
Posts (Atom)