ATI support as of 8.9 drivers

Here is what I have for supported extensions as of 8.9 if anyone is interested. This is on a Radeon 3650

Depth Buffer Bits = 24
Maximum Texture Coordinates = 8
Maximum Texture Units = 16
Maximum Vertex Texture Units = 16
Maximum Vertex Attributes = 16
Max Texture units on this card = 8
Max Texture size on this card = 8192
Max Renderbuffer size on this card = 8192
Max 3D texture size on this card = 8192
Max Cubemap texture size on this card = 8192
Max Uniform Variables on this card = 512
Max Varying Variables on this card = 68
Max Vertices on this card = 2147483647
Max Indices on this card = 16777215
Max ViewPort width size = 8192
Max ViewPort height size = 8192

MultiSample Buffers = 0
MultiSample Samples = 0

Vendor ATI Technologies Inc.
Renderer ATI Radeon HD 3600 Series
OpenGL version = 2.1.7976 Release

OpenGL Extensions supported on this Video Card
GL_AMDX_vertex_shader_tessellator
GL_AMD_performance_monitor
GL_ARB_color_buffer_float
GL_ARB_depth_texture
GL_ARB_draw_buffers
GL_ARB_fragment_program
GL_ARB_fragment_shader
GL_ARB_multisample
GL_ARB_multitexture
GL_ARB_occlusion_query
GL_ARB_pixel_buffer_object
GL_ARB_point_parameters
GL_ARB_point_sprite
GL_ARB_shader_objects
GL_ARB_shading_language_100
GL_ARB_shadow
GL_ARB_shadow_ambient
GL_ARB_texture_border_clamp
GL_ARB_texture_compression
GL_ARB_texture_cube_map
GL_ARB_texture_env_add
GL_ARB_texture_env_combine
GL_ARB_texture_env_crossbar
GL_ARB_texture_env_dot3
GL_ARB_texture_float
GL_ARB_texture_mirrored_repeat
GL_ARB_texture_non_power_of_two
GL_ARB_texture_rectangle
GL_ARB_transpose_matrix
GL_ARB_vertex_buffer_object
GL_ARB_vertex_program
GL_ARB_vertex_shader
GL_ARB_window_pos
GL_ATI_draw_buffers
GL_ATI_envmap_bumpmap
GL_ATI_fragment_shader
GL_ATI_meminfo
GL_ATI_separate_stencil
GL_ATI_shader_texture_lod
GL_ATI_texture_compression_3dc
GL_ATI_texture_env_combine3
GL_ATI_texture_float
GL_EXT_abgr
GL_EXT_bgra
GL_EXT_blend_color
GL_EXT_blend_equation_separate
GL_EXT_blend_func_separate
GL_EXT_blend_minmax
GL_EXT_blend_subtract
GL_EXT_compiled_vertex_array
GL_EXT_copy_texture
GL_EXT_depth_buffer_float
GL_EXT_draw_range_elements
GL_EXT_fog_coord
GL_EXT_framebuffer_blit
GL_EXT_framebuffer_multisample
GL_EXT_framebuffer_object
GL_EXT_framebuffer_sRGB
GL_EXT_gpu_program_parameters
GL_EXT_multi_draw_arrays
GL_EXT_packed_depth_stencil
GL_EXT_packed_float
GL_EXT_packed_pixels
GL_EXT_point_parameters
GL_EXT_rescale_normal
GL_EXT_secondary_color
GL_EXT_separate_specular_color
GL_EXT_shadow_funcs
GL_EXT_stencil_wrap
GL_EXT_subtexture
GL_EXT_texgen_reflection
GL_EXT_texture3D
GL_EXT_texture_compression_s3tc
GL_EXT_texture_cube_map
GL_EXT_texture_edge_clamp
GL_EXT_texture_env_add
GL_EXT_texture_env_combine
GL_EXT_texture_env_dot3
GL_EXT_texture_filter_anisotropic
GL_EXT_texture_lod_bias
GL_EXT_texture_mirror_clamp
GL_EXT_texture_object
GL_EXT_texture_rectangle
GL_EXT_texture_sRGB
GL_EXT_texture_shared_exponent
GL_EXT_vertex_array
GL_KTX_buffer_region
GL_NV_blend_square
GL_NV_texgen_reflection
GL_SGIS_generate_mipmap
GL_SGIS_texture_edge_clamp
GL_SGIS_texture_lod
GL_WIN_swap_hint
WGL_EXT_swap_control

Max Uniform Variables on this card = 512

That’s a joke, but a really bad one. When i ran into this limit some months ago on a Radeon 4xxx, i dropped ATI support altogether. It’s really disappointing, D3D10 already required 4096 uniforms, so this is clearly an artificial limitation.

Jan.

Must be, my GF 9500 has 4096!

My Gf9 too. And my Radeon Mobility X1600 had 4096 also, if i am not entirely mistaken. That was the main reason why i have lost all trust in ATI. They are completely bullshitting us.

Maybe this is a limitation only for ARB shaders? Maybe it’s a forgotten-to-modify constant in their driver code? Testing with a simple GLSL shader, that uses 1024-4000 vec4 uniforms can show the truth imho.

I did exactly that. That is how i actually discovered the limitation. I assumed 4096 uniforms were standard, so my glsl shader used that. When it failed on the more recent ATI cards, i checked how many uniforms were supported and were very surprised…

I actually posted that in a thread here and some ATI PR guy responded with some PR bla bla. You know you are not taken seriously, when they send the PR department. They can fool consumers, but to try to fool developers is simply rude.

Jan.

Funny how nv’s 9500 can handle this, when the ATI’s 9500 can’t. :slight_smile:
(sorry, I couldn’t resist taking a stab at it)

Anyway, 8192 3D textures is cocky, to say the least. 8192 = 2^13. 2^(13*3) = 2^39 = 512GB! Do they really expose such a large address space (considering even recent x64 intel CPU’s only expose 36, or was it 39, bits of physical address lines IIRC)?

Also, 2 giga-vertices, that’s a helluva lot of memory. Assuming xyz float’s, that’s 6GB. I fear I have to question if it can really handle this…

24-bit indices count though, that was… interesting.

8192 sized 3D textures means, that you can have 3D textures with one or two dimensions being up to 8192. That can be useful in many areas. Of course a 8192^3 sized 3D texture would most certainly fail due to memory/address constraints.

Max Vertices on this card = 2147483647
Max Indices on this card = 16777215

Well those values are IMO labeled incorrectly / misleading. I assume it is the values introduced with the glDrawRangeElements extension. ATI always returned those values, even on ancient hardware, which simply means they don’t care to return anything useful. The values are supposed to mean how many vertices/indices PER DRAWCALL are optimal for performance and are intended as a guideline. E.g. a renderer could use them to setup the maximum size for a queue where it caches indices to render. nVidia returns something like 4096, at least they did a few years ago.

I don’t know what you mean, where is that mentioned?

Jan.

So where is GL_ext_gpu_shader4 isn’t that required for GLSL1.3 /GL3.0? What’s the deal here I thought 8.9 has the full OpenGL3.0 chezbang

What’s the deal here I thought 8.9 has the full OpenGL3.0 chezbang

They so very much never promised that for 8.9. They had a list of extensions that they would be supporting in 8.9, as the first steps towards 3.0. But full 3.0 won’t show up until Q1 2009, which they already said.

Thanks Korval that clarifies some bits!

I know, and that’s why I questioned the sanity of the numbers.

2^24 = 16*1024^2 = 16777216.

When Ati exposes the bindable uniform buffer extension you’ll see a different set of limits for that extension, apart from the reported max vertex/fragment uniform components. My hunch is that the max on “uniform variables” is something different, probably just a limit on the default uniform buffer available to the shader(s).

[quote]When Ati exposes the uniform buffer extension you’ll see a different set of limits for that extension, apart from the reported max vertex/fragment uniform components.[quote]

That is entire orthogonal to the uniform limits. Even if your hunch is correct, that’s an internal implementation problem. They don’t have to expose uniform buffers to the user in order to use them internally.

It’s simply yet another piece of evidence that suggests that ATi will do exactly and only the bare minimum to make currently existing games run under GL.

Oh, and I wouldn’t put that “When” in bold just yet. Uniform buffers aren’t an ARB extension, nor are they core. So don’t expect ATi to raise one figure to expose them in GL.

The brazen “when” was not a statement of fact, merely a strongly worded request with an emphasis on timeliness :wink:

http://www.geeks3d.com/?p=1658

Shows the updates to 8.10 series drivers