"Whenever you find that you are on the side of the majority, it is time to reform."
- Mark Twain
More pages: 1 ... 11 12 13 14 15 16 17 18 19 20 21 22 ... 31 ... 41 ... 47
Yay! New GPU!
Friday, April 3, 2009 | Permalink

It's good to have friends in the industry. When my GPU was confirmed dead I replaced it with the only GPU I had laying around that would even produce an image on my screen, which was an old GF 6600 that I used as a debug device for Nvidia specific issues in my demos. While it produced an image it was only able to drive it in a double-pixel mode (1280x800, native is 2560x1600), which was kind of painful and not a state I wanted to be in for longer than necessary. So the first thing I did was to order a new GPU, a HD 4870. However, it didn't take long until I was offered a new GPU, first from AMD and then from Nvidia. So I cancelled the order and waited for the free GPUs instead.

Meanwhile I've been coding a little in double-pixel mode the last two weeks. So now my next framework works on DX9 cards in D3D_FEATURE_LEVEL_9_3 through DX11. Not sure how much of that I will maintain in the future, but I suppose there could be cases where I want a demo to run on older hardware. I've also spent some more time playing around with SSE, moving on to my image class, which I'm also building around SSE. Haven't done much with it yet, but at least I've done a couple of routines for swapping BGRA to RGBA and mipmap generation. SSSE3 has a very convenient instruction for BGRA8 to RGBA8 swapping called pshufb, with which I can swap 4 pixels per instruction. I'm using SSE3 (with just two 'S'es) as the baseline though, so I have also implemented a standard path, which was trickier to do, but 4 pixels in 5 instructions is not bad either.

Now the AMD card has arrived, so I'm back to normal again. It's a HD 4890, which is very nice, especially since it was free. I haven't had much chance to play around with it yet. I've tried a couple of games and that's about it so far. But this weekend I'm gonna be coding.

[ 5 comments | Last comment by Humus (2009-04-05 00:56:24) ]

Recommended reading
Sunday, March 29, 2009 | Permalink

The Visual C++ Team Blog sometimes has some of the longest blog posts that you can imagine. However, they contain loads of detailed and very useful information. I highly recommend these two posts that contain info about the C++0x standard and what's being implemented in MSVC, and why you should care. And yes, you should care. Especially rvalue references can have a significant performance advantage if you do it right.

Lambdas, auto, and static_assert: C++0x Features in VC10, Part 1
Rvalue References: C++0x Features in VC10, Part 2

[ 4 comments | Last comment by yoav (2009-04-06 18:31:49) ]

Random google result
Saturday, March 28, 2009 | Permalink

Why hasn't Nvidia marketed this product more?

[ 4 comments | Last comment by ABC (2009-06-01 08:26:45) ]

OpenGL 3.1 released
Wednesday, March 25, 2009 | Permalink

Press Release
Specification

[ 5 comments | Last comment by Overlord (2009-03-27 20:31:16) ]

New DirectX SDK
Tuesday, March 24, 2009 | Permalink

The DirectX March 2009 release has been released.
Download here

[ 4 comments | Last comment by Humus (2009-03-25 21:33:49) ]

For dust thou art ...
Sunday, March 22, 2009 | Permalink

... and unto dust shalt thou return.

In loving memory (1GB) of my Radeon HD 3870x2 who passed away this afternoon.





After suffering experimental code, beta SDKs and many driver resets for a long time, it finally couldn't handle it anymore. It walked many code paths that no one walked before.

It was 1.2 years old.
Rest in peace.

[ 12 comments | Last comment by Humus (2009-04-04 17:42:02) ]

A couple of benchmarks
Saturday, March 21, 2009 | Permalink

So I put my SSE vector class to the test to see if it would give any actual performance improvement over the standard C++ implementation I've used in the past. So I set up a test case with an array of 16 million random float4 vectors, which I multiplied with a matrix and stored into result array of the same size.

First I tested the diffent implementations against each other. I tested the code compiled to standard FPU code, and then with MSVC's /arch:SSE2 option enabled, which uses SSE2 code instead of FPU most of the time (although mostly just uses scalar instructions), and then my own implementation using SSE intrinsics. This is the time it took to complete the task:

FPU: 328ms
SSE2: 275ms
Intrisics: 177ms

That's a decent performance gain. I figured there could be some performance gain by unrolling the loop and do four vectors loop iteration.

Unroll: 165ms

Quite small gain, so I figured I'm probably more memory bandwidth bound than computation limited. So I added a prefetch and streaming stores just to see how that affected performance.

Prefetch: 164ms
Stream: 134ms
Prefetch + Stream: 128ms

Final code runs 2.56x faster than the original. Not too bad.

[ 6 comments | Last comment by Paul (2011-02-01 21:48:29) ]

Ubuntu rocks!
Thursday, March 19, 2009 | Permalink

It's been a while since I last tried Linux, for two reasons. First is the OpenGL debacle that has turned this API much less interesting to me, and with all my demos written in DX10 there hasn't been much need to ever boot into Linux. The other reason is that for a long time AMD didn't provide any drivers for my particular GPU, a Radeon HD 3870x2. Oddly enough, the release notes for the Linux drivers still say that the HD 3870x2 is not supported, although clearly it worked for me now, so I suppose this is just a documentation error. How long it's been working I have no idea.

Anyway, so I wanted to try some stuff in Linux recently, primarily the SSE intrinsics. In the past I've used Gentoo, which is more of a power user distribution, but I couldn't be bothered to use that again since it's quite a lot of work to set i up, besides it's not being updates as much as it used to be these days. Ubuntu on the other hand seems to be the most trendy distribution now, so I decided to give it a try. I have to say I'm quite impressed. It gave me a quite "Windows-like" experience. First I installed it on my laptop. It installed without problems and once I was in the OS it notifed me about updates which it downloaded and installed for me. Drivers for all my hardware was set up automatically and everything just worked out of the box. It even asked me whether it should install the proprietary drivers for my video card and set that up automatically for me as well. Once I got down to compiling stuff and needed libraries I was able to find and install everything I needed with a few searches in Adept.

In the past I would have said that the big problem for Linux is that it's an OS for geeks made by geeks and that for instance my mom who has big enough trouble with Windows would not be able to use it. And frankly, even if you're a geek, who wants to hack around in a bunch of config files anyway? I don't know how much of this is Ubuntu vs. Gentoo, or just the general progress of Linux in the last year or so, but with the experience I had I have to say that I would now be comfortable with recommending Linux to anyone. If you have never worked with either Windows or Linux before and you're starting entirely from scratch, I don't think it would be any harder to get started on Linux than on Windows.

Anyway, this was on my laptop. I installed it there primarily because I didn't think drivers for my HD 3870x2 existed, because that's what the driver release notes say anyway, whereas the Mobility HD 3650 should be fine. So given this positive experience I decided to give it a try on my desktop machine as well. Especially since I didn't want to have to copy files back and forth between my computers. Just for convenience I decided to use Wubi, which basically is an Ubuntu installer you run from Windows. It really can't be simpler than that. Download an exe, double-click and off you go. Once it's done you have a fully working complete Linux installation. Not a virtual machine like "Linux inside Windows" or anything like that, but a standard OS you boot into, except its file system is a large file on your Windows drive. And if you don't like it you can also uninstall it like any other application. With Wubi any form of inconvenince or danger of changing the partitions on your harddrive is eliminated. There's really no excuse for not giving Linux a try anymore. So I gave it a shot, and it worked fine, and to my surprise it even installed drivers for my GPU, which I thought didn't exist. And they worked fine too. The Wubi installation seems to differ from the regular installation though in a few ways. I found I had to change a few settings here and there, like changing from single-click to double-click for opening files and so on. Also it seems the packages Adept knows about differ. The standard installation had all dev packages I needed, whereas I had to resort to typing apt-get on the commandline to install some packages in the Wubi installation. I suppose Adept has some sort of index of packages it knows about and the Wubi installation only includes those a normal user would use, or something like that. I haven't used Ubuntu before or Adept so I really don't know. Other than those minor annoyances, the Wubi installation worked really fine too.

Two thumbs up for the Linux community.

[ 4 comments | Last comment by Humus (2009-03-21 00:03:14) ]

More pages: 1 ... 11 12 13 14 15 16 17 18 19 20 21 22 ... 31 ... 41 ... 47