summaryrefslogtreecommitdiffstats
path: root/src/gallium/drivers/r300
Commit message (Collapse)AuthorAgeFilesLines
* r300g: remove default case statements in get_paramMarek Olšák2011-11-221-8/+2
| | | | This will throw a compile warning if there's an unhandled CAP.
* u_vbuf_mgr: rename to u_vbufMarek Olšák2011-11-221-2/+2
|
* gallium: separate out floating-point CAPs into its own enumMarek Olšák2011-11-222-12/+13
| | | | | | | | | | | | | | | The motivation behind this is to add some self-documentation in the code about how each CAP can be used. The idea is: - enum pipe_cap is only valid in get_param - enum pipe_capf is only valid in get_paramf Which CAPs are floating-point have been determined based on how everybody except svga implemented the functions. svga have been modified to match all the other drivers. Besides that, the floating-point CAPs are now prefixed with PIPE_CAPF_.
* gallium: remove PIPE_CAP_GLSL and enable GLSL unconditionallyMarek Olšák2011-11-221-16/+0
| | | | | Only i965g does not enable GLSL, but that driver has been unmaintained and bitrotting for quite a while anyway.
* r300g: set max_index to 0xffffff if there are no per-vertex attribsMarek Olšák2011-11-201-2/+11
|
* u_vbuf_mgr: correctly compute max vertex count from hw buffersMarek Olšák2011-11-201-1/+8
| | | | | | | | And update r300g. This is different from util_draw_max_index in how it obtains vertex elements and that it doesn't have to call util_format_description due to additional precomputed data in vertex elements.
* r300g: use u_vbuf_mgr to set/get the index bufferMarek Olšák2011-11-203-24/+12
|
* r300g: always set VF_MIN_VTX_INDX to 0Marek Olšák2011-11-201-11/+10
| | | | It's not really useful to have non-zero there.
* r300g: fix query result of GPU_FINISHEDMarek Olšák2011-11-101-1/+1
|
* r300g: implement PIPE_QUERY_GPU_FINISHEDMarek Olšák2011-11-101-4/+35
|
* r300g: implement PIPE_QUERY_OCCLUSION_PREDICATEMarek Olšák2011-11-101-1/+5
|
* r300g: force buffer placements to GTT on big endian machinesMarek Olšák2011-11-031-0/+6
|
* r300g: Fix queries on big endian hosts.Michel Dänzer2011-11-021-1/+2
| | | | | Signed-off-by: Michel Dänzer <[email protected]> Reviewed-by: Corbin Simpson <[email protected]>
* r300g: remove useless codeMarek Olšák2011-10-284-22/+3
|
* r300/compiler: Fix scheduler bug causing texture corruptionTom Stellard2011-10-271-6/+35
| | | | | | | | | | | | | | We weren't setting TEX_SEM_WAIT on instructions that read the value of a TEX instruction and also wrote the same register as the TEX instruction. This is the sequence we were miscompiling: 1: TEX temp[0], input[2].xy__, 2D[0] ... 16: src0.xyz = temp[22], src1.xyz = temp[0], src2.xyz = temp[19] MAD temp[0].xyz, src0.xxx, src1.xyz, src2.xxx https://bugs.freedesktop.org/show_bug.cgi?id=42090
* r300g: expose ARB_ES2_compatibility by claiming FIXED format supportMarek Olšák2011-10-242-2/+8
|
* r300g: don't call u_trim_pipe_prim in r300_swtcl_draw_vboMarek Olšák2011-10-231-5/+0
| | | | This was dead code anyway.
* r300g: don't return NULL in resource_from_handle if the resource is too smallMarek Olšák2011-10-204-30/+22
| | | | | | | | | The DDX may allocate a buffer with a too small size. Instead of failing, let's pretend everything's alright. Such bugs should be fixed in the DDX, of course. NOTE: This is a candidate for the stable branches.
* r300/compiler: Try to eliminate REPL_ALPHA instructionsTom Stellard2011-10-161-33/+57
| | | | | | | Scalar instruction that need to write to the xyz components of a register must reserve the RGB instruction slot for a REPL_ALPHA instruction. With this commit, the scheduler will attempt to free the RGB slot by moving the write to the w component of a register.
* r300/compiler: More agressive RGB to Alpha conversionsTom Stellard2011-10-161-8/+10
|
* r300/compiler: Only convert RGB->Alpha when optimizations are enabledTom Stellard2011-10-162-1/+8
|
* Revert "r300g: fix rendering with a non-zero index bias in ↵Marek Olšák2011-10-161-3/+1
| | | | | | | | draw_elements_immediate" This reverts commit 5506f6ef966b8883e575a3f60ce96ad42ee6ffd2. It breaks more things than it fixes.
* r300/compiler: Enable reg rename pass on r500 and run it before optimizationsTom Stellard2011-10-141-4/+1
| | | | | The scheduler and the register allocator are now smart enough to handle it.
* r300/compiler: Implement the texture semaphoreTom Stellard2011-10-146-49/+308
| | | | | | | | | | | The texture semaphore allows for prefetching of texture data. On my RV515, this increases the FPS of Lightsmark by 33% (This is with the reg_rename pass enabled, which is enabled in the next commit). There is a new env variable now called RADEON_TEX_GROUP, which allows you to specify the maximum number of texture lookups to do at once. The default is 8, but different values could produce better results for various application / card combinations.
* r300/compiler: Don't pair output writes with GPR writes in the schedulerTom Stellard2011-10-141-0/+7
|
* r300/compiler: Prevent regalloc from creating non-native swizzlesTom Stellard2011-10-141-16/+63
|
* r300/compiler: Allow merged instructions to be scheduled on demandTom Stellard2011-10-141-50/+99
| | | | | | We no longer emit full instructions immediately after they have been merged. Instead merged instructions are added to the ready list and the scheduler can commit them whenever it wants.
* r300g: set max vertex samplers to 0 on swtcl chipsetsMarek Olšák2011-10-141-3/+8
| | | | | | | This should fix a bug added by f5bfe54a. Might also fix: https://bugs.freedesktop.org/show_bug.cgi?id=41715
* gallium: rename ZS stencil type to UINT (v2)Dave Airlie2011-10-113-5/+5
| | | | | | | | | | these are never USCALED, always UINT in reality. taken from some work by Christoph Bumiller v2: fixup formatting of table + tabs Signed-off-by: Dave Airlie <[email protected]>
* u_blitter: add integer clear supportDave Airlie2011-10-091-1/+2
| | | | | | | | | | | We need add a new set of fragment shader variants, along with new vertex elements for signed and unsigned clears. The new fragment shader variants are due to the integers values requiring CONSTANT interpolation. The new vertex element descriptions are for passing the clear color as an unsigned or signed integer value. Signed-off-by: Dave Airlie <[email protected]>
* r300g: remove unused r300_resource::tex_offsetMarek Olšák2011-10-085-16/+6
|
* r300g: disable stream output on SWTCL chipsetsMarek Olšák2011-10-081-1/+1
| | | | Unimplemented and not so useful for this driver.
* r300g: fix rendering with a non-zero index bias in draw_elements_immediateMarek Olšák2011-10-041-1/+3
| | | | NOTE: This is a candidate for the stable branches.
* r300/compiler: Fix error in OMOD optimizationTom Stellard2011-10-021-0/+16
| | | | | | | | | | | | | | | | | | | | | | | | | | Classic compiler mistake. In the example below, the OMOD optimization was combining instructions 4 and 10, but since there was an instruction (#8) in between them that wrote to the same registers as instruction 10, instruction 11 was reading the wrong value. Example of the mistake: Before OMOD: 4: MAD temp[0].y, temp[3]._y__, const[0]._x__, const[0]._y__; ... 8: ADD temp[2].x, temp[1].x___, -temp[4].x___; ... 10: MUL temp[2].x, const[1].y___, temp[0].y___; 11: FRC temp[5].x, temp[2].x___; After OMOD: 4: MAD temp[2].x / 8, temp[3]._y__, const[0]._x__, const[0]._y__; ... 8: ADD temp[2].x, temp[1].x___, -temp[4].x___; ... 11: FRC temp[5].x, temp[2].x___; https://bugs.freedesktop.org/show_bug.cgi?id=41367
* r300/compiler: Rewrite source swizzles when using OMODTom Stellard2011-10-021-1/+6
|
* r300/compiler: Fix rc_normal_rewrite_writemask()Tom Stellard2011-10-021-5/+4
| | | | This function had not been updated to use conversion swizzles.
* r300/compiler: Use consistent src swizzles for transcendent instructionsTom Stellard2011-10-025-6/+33
| | | | | | | | | | | | | | | Source swizzles for transcendent instructions were being stored in the X channel regardless of what channel the instruction was writing. This was causing problems for some helper functions that were expecting source swizzles to occupy channels corresponding to the instruction's writemask. This commit makes transcendent instructions follow the same convention as normal instructions for representing source swizzles. Previous behavior: LG2 temp[0].y, input[0].x___; Current behavior: LG2 temp[0].y, input[0]._x__;
* winsys/radeon: move GEM domains out of the drivers into winsysMarek Olšák2011-09-307-31/+21
| | | | | | | | | | | | | | | The drivers don't need to care about the domains. All they need to set are the bind and usage flags. This simplifies the winsys too. This also fixes on r600g: - fbo-depth-GL_DEPTH_COMPONENT32F-copypixels - fbo-depth-GL_DEPTH_COMPONENT16-copypixels - fbo-depth-GL_DEPTH_COMPONENT24-copypixels - fbo-depth-GL_DEPTH_COMPONENT32-copypixels - fbo-depth-GL_DEPTH24_STENCIL8-copypixels I can't explain it. Reviewed-by: Alex Deucher <[email protected]>
* winsys/radeon: remove a redundant parameter 'size' from buffer_from_handleMarek Olšák2011-09-301-1/+1
| | | | | | It's part of pb_buffer already. Reviewed-by: Alex Deucher <[email protected]>
* gallium: add PIPE_CAP_TEXTURE_BARRIERMarek Olšák2011-09-301-0/+1
| | | | | | Same issue as with conditional_render. Reviewed-by: Brian Paul <[email protected]>
* gallium: add PIPE_CAP_CONDITIONAL_RENDERMarek Olšák2011-09-301-0/+1
| | | | | | | We were checking whether render_condition is set. That was not reliable, because it's always set with trace and noop regardless of driver support. Reviewed-by: Brian Paul <[email protected]>
* gallium: add and use PIPE_SHADER_CAP_MAX_TEXTURE_SAMPLERSMarek Olšák2011-09-301-2/+3
| | | | | | | | | This removes: - PIPE_CAP_MAX_TEXTURE_IMAGE_UNITS - PIPE_CAP_MAX_VERTEX_TEXTURE_UNITS in favor of the that new per-shader cap. Reviewed-by: Brian Paul <[email protected]>
* gallium: remove PIPE_CAP_TEXTURE_MIRROR_REPEATMarek Olšák2011-09-301-1/+0
| | | | | | | | | | All drivers support it (well, except Cell). The boolean option is going away from core Mesa too. This is a follow-up to Ian Romanick's patch "mesa: Remove ARB_texture_mirrored_repeat extension enable flag". Reviewed-by: Brian Paul <[email protected]>
* r300g: remove useless variables in some structuresMarek Olšák2011-09-294-29/+12
|
* r300g: simplify the immd_is_good_idea functionMarek Olšák2011-09-291-26/+2
|
* gallium: move border color to be a color unionDave Airlie2011-09-271-1/+1
| | | | | | | | | | EXT_texture_integer also specifies border color should be a color union, the values are used according to the texture sampler format. (update docs) Signed-off-by: Dave Airlie <[email protected]> Reviewed-by: Brian Paul <[email protected]>
* u_vbuf_mgr: s/u_vbuf_mgr_/u_vbuf_Marek Olšák2011-09-264-9/+9
|
* u_vbuf_mgr: cleanup original vs real vertex buffer arraysMarek Olšák2011-09-262-15/+16
| | | | | | It can now override both buffer offsets and strides in additions to resources. Overriding buffer offsets was kinda hackish and could cause issues with non-native vertex formats.
* r300/compiler: Fix regalloc for values with multiple writersTom Stellard2011-09-181-3/+6
| | | | | | | https://bugs.freedesktop.org/show_bug.cgi?id=40062 https://bugs.freedesktop.org/show_bug.cgi?id=36939 Note: This is a candidate for the 7.11 branch.
* gallium: move clear paths from rgba to a pointer to a color union (v2)Dave Airlie2011-09-182-15/+15
| | | | | | | | | | | | | | | This moves the gallium interface for clears from using a pointer to 4 floats to a pointer to a union of float/unsigned/int values. Notes: 1. the value is opaque. 2. only when the value is used should it be interpretered according to the surface format it is going to be used with. 3. float clears on integer buffers and vice-versa are undefined. v2: fixed up vega and graw, dropped hunks that shouldn't have been in patch. Signed-off-by: Dave Airlie <[email protected]>