summaryrefslogtreecommitdiffstats
path: root/src
Commit message (Collapse)AuthorAgeFilesLines
* intel: Clean up confusion between logical and physical surface dimensions.Paul Berry2013-01-098-153/+143
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In most cases, the width, height, and depth of the physical surface used by the driver to implement a texture or renderbuffer is equal to the logical width, height, and depth exposed to the client through functions such as glTexImage3D(). However, there are two exceptions: cube maps (which have a physical depth of 6 but a logical depth of 1) and multisampled renderbuffers (which have larger physical dimensions than logical dimensions to allow multiple samples per pixel). Previous to this patch, we accounted for the difference between physical and logical surface dimensions at inconsistent places in the call graph (multisampling was accounted for in intel_miptree_create_for_renderbuffer(), and cubemaps were accounted for in intel_miptree_create_internal()). As a result, it wasn't always clear, when calling a miptree creation function, whether physical or logical dimensions were needed. Also, we weren't consistent about storing logical dimensions in the intel_mipmap_tree structure (we only did so in the intel_miptree_create_for_renderbuffer() code path, and we did not store depth). This patch refactors things so that intel_miptree_create_internal() is responsible for converting logical to physical dimensions and for storing both the physical and logical dimensions in the intel_mipmap_tree structure. As a result, all miptree creation functions interpret their arguments as logical dimensions, and both physical and logical dimensions are always available to functions that work with intel_mipmap_trees. In addition, it renames the fields in intel_mipmap_tree used to store the dimensions, so that it is clear from the name whether physical or logical dimensions are being referred to. This should fix the following bugs: - When creating a separate stencil surface for a depthstencil cubemap, we would erroneously try to convert the depth from 1 to 6 twice, resulting in an assertion failure. - When creating an MCS buffer for compressed multisampling, we used physical dimensions instead of logical dimensions, resulting in wasted memory. In addition, this should considerably simplify the implementation of ARB_texture_multisample, because it moves the code to compute the physical size of multisampled surfaces out of renderbuffer-only code. Reviewed-by: Chris Forbes <[email protected]> Reviewed-by: Kenneth Graunke <[email protected]> Reviewed-by: Chad Versace <[email protected]>
* intel: Add a force_y_tiling parameter to intel_miptree_create().Paul Berry2013-01-095-26/+34
| | | | | | | | | | | This allows intel_miptree_alloc_mcs() to force Y tiling for the MCS buffer. Previously we accomplished this by the hack of passing INTEL_MSAA_LAYOUT_CMS as the msaa_layout parameter, but that parameter is going to be going away soon. Reviewed-by: Chris Forbes <[email protected]> Reviewed-by: Kenneth Graunke <[email protected]> Reviewed-by: Chad Versace <[email protected]>
* intel: Move compute_msaa_layout earlier in file.Paul Berry2013-01-091-38/+41
| | | | | | | | | | No functional change. This patch moves the compute_msaa_layout() function earlier in intel_mipmap_tree.c so that it can be used by other functions in that file. Reviewed-by: Chris Forbes <[email protected]> Reviewed-by: Kenneth Graunke <[email protected]> Reviewed-by: Chad Versace <[email protected]>
* r600g: Fix memory leak in r600_bytecode_add_vtx.Vinson Lee2013-01-091-0/+1
| | | | | | Fixes resource leak defect reported by Coverity. Signed-off-by: Vinson Lee <[email protected]>
* r300g: optionally log MSAA resources to stderrMarek Olšák2013-01-093-0/+8
| | | | Set: RADEON_DEBUG=msaa
* r300g: fix the GPU name in the renderer stringMarek Olšák2013-01-091-0/+1
| | | | Broken by ca474f98f2cda5cb333e9f851.
* r300g: fix CS checker errors caused by emit_dsa_stateMarek Olšák2013-01-091-1/+1
| | | | size is 10 on r500 and 8 on r300
* clover: Adapt libclc's INCLUDEDIR and LIBEXECDIR to make use of the new ↵Johannes Obermayr2013-01-082-3/+4
| | | | | | | | | introduced libclc.pc. Tom Stellard: -Keep --with-libclc-path and mark it deprecated. Reviewed-by: Tom Stellard <[email protected]>
* glsl: Don't add structure fields to the symbol tableIan Romanick2013-01-081-1/+0
| | | | | | | | | | | | | | | | | I erroneously added this back in January 2011 in commit 88421589. Looking at the commit message, I have no idea why I added it. It only added non-array structure fields to the symbol table, so array structure fields are treated correctly. Fixes piglit tests structure-and-field-have-same-name.vert and structure-and-field-have-same-name-nested.vert. It should also fix WebGL conformance tests shader-with-non-reserved-words. NOTE: This is a candidate for the stable release branches. Signed-off-by: Ian Romanick <[email protected]> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=57622 Reviewed-by: Kenneth Graunke <[email protected]>
* i965/fs: Fix struct vs. class in acp_entry definitions.Kenneth Graunke2013-01-081-1/+1
|
* r600g: implement buffer copying using CP DMA for R7xx, Evergreen, CaymanMarek Olšák2013-01-089-24/+140
| | | | | | | | | | R6xx doesn't work - the issue seems to be with flushing (sometimes the destination buffer contains garbage). There are no hangs, so we're good. R7xx doesn't seem to have any alignment restriction despite our initial thinking. Everything just works. Reviewed-by: Alex Deucher <[email protected]>
* st/mesa: fix possible MSVC build error v2Marek Olšák2013-01-081-2/+2
| | | | | | https://bugs.freedesktop.org/show_bug.cgi?id=59143 Using GLubyte as per Brian's suggestion.
* glsl: Pack flat "varyings" of mixed types together.Paul Berry2013-01-082-14/+101
| | | | | | | | | | | | | | | | | | | | | This patch enhances the varying packing code so that flat varyings of uint, int, and float types can be packed together. We accomplish this in lower_packed_varyings.cpp by making the type of all flat varyings ivec4, and then using information-preserving type conversions (e.g. ir_unop_bitcast_f2i) to convert all other types to ints. The varying_matches::compute_packing_class() function is updated to reflect the fact that varying packing no longer needs to segregate varyings of different base types. Fixes piglit test varying-packing-mixed-types. Reviewed-by: Kenneth Graunke <[email protected]> v2: Split lower_packed_varyings_visitor::bitwise_assign into pack/unpack variants.
* glsl: Prohibit structs and bools from being used as "varyings".Paul Berry2013-01-081-21/+71
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The GLSL 1.30 spec only allows vertex shader outputs and fragment shader inputs ("varyings" in pre-GLSL-1.30 parlance) to be of type int, uint, float, or vectors, matrices, or arrays thereof. Bools, bvec's, and structs are prohibited. (Integral varyings were prohibited prior to GLSL 1.30). Previously, Mesa only performed this check on variables declared with the "varying" keyword, and it always performed the check according to the pre-GLSL-1.30 rules. As a result, bools and structs were allowed to slip through, provided they were declared using the new in/out syntax. This patch modifies the error check so that it occurs after "varying" is converted to "in/out", and corrects it to properly account for GLSL version. Fixes piglit tests: in-bool-prohibited.frag in-bvec2-prohibited.frag in-bvec3-prohibited.frag in-bvec4-prohibited.frag in-struct-prohibited.frag out-bool-prohibited.vert out-bvec2-prohibited.vert out-bvec3-prohibited.vert out-bvec4-prohibited.vert out-struct-prohibited.vert Reviewed-by: Kenneth Graunke <[email protected]>
* glsl: Plumb through is_parameter to apply_type_qualifier_to_variable()Paul Berry2013-01-081-3/+4
| | | | | | | | | | This patch adds logic to allow the ast_to_hir function apply_type_qualifier_to_variable() to tell whether it is acting on a variable declaration or a function parameter. This will allow it to correctly interpret the meaning of "out" and "in" keywords (which have different meanings in those two contexts). Reviewed-by: Kenneth Graunke <[email protected]>
* glsl: Separate varying linking code to its own file.Paul Berry2013-01-085-1124/+1240
| | | | | | | | linker.cpp is getting pretty big, and we're about to add even more varying packing code, so split out the linker code that concerns varyings to its own file. Reviewed-by: Kenneth Graunke <[email protected]>
* mesa: Add ALIGN() macro to main/macros.h.Paul Berry2013-01-085-17/+15
| | | | | | | | | Previously this macro existed in 3 separate places, some inside the intel driver and some outside of it. It makes more sense to have it in main/macros.h Reviewed-by: Brian Paul <[email protected]> Reviewed-by: Kenneth Graunke <[email protected]>
* glsl: Fix loop bounds detection.Paul Berry2013-01-081-4/+4
| | | | | | | | | | | | | When analyzing a loop where the loop condition is expressed in the non-standard order (e.g. "4 > i" instead of "i < 4"), we were reversing the condition incorrectly, leading to a loop bound that was off by 1. Fixes piglit tests {vs,fs}-loop-bounds-unrolled.shader_test. Reviewed-by: Kenneth Graunke <[email protected]> Reviewed-by: Matt Turner <[email protected]> Reviewed-by: Eric Anholt <[email protected]>
* winsys/radeon: bump the size of relocation hashlistMarek Olšák2013-01-081-2/+2
| | | | This should reduce the number of hash collisions in ETQW.
* nvc0: catch too high GENERIC indices to prevent GRAPH trapsChristoph Bumiller2013-01-081-0/+6
|
* nvc0: use correct resource target to select blit shaderChristoph Bumiller2013-01-081-2/+2
|
* nvc0: add missing call to map edge flag in push_vboChristoph Bumiller2013-01-081-0/+3
| | | | Note: this is a candidate for the 9.0 stable branch.
* nv50/ir: wrap assertion using typeid in #ifndef NDEBUGChristoph Bumiller2013-01-081-0/+2
| | | | Note: this is a candidate for the 9.0 stable branch.
* nvc0: fix out of bounds writes for unaligned sizes in push_dataChristoph Bumiller2013-01-081-2/+4
|
* nouveau: increase max order of suballocated buffers by 1Christoph Bumiller2013-01-081-2/+9
| | | | | This is really a hack to make TF2 (considerably, up to 20 -> 70 fps at low res) faster.
* nouveau: improve buffer transfersChristoph Bumiller2013-01-0812-137/+551
| | | | | | Save double memcpy on uploads to VRAM in most cases. Properly handle FLUSH_EXPLICIT. Reallocate on DISCARD_WHOLE_RESOURCE to avoid sync.
* r300g: fix assertion failure in emit_dsa_stateMarek Olšák2013-01-082-3/+5
| | | | Broken by 8ed6b1400bc8a78f46340f41aaf2e88b24c23267.
* i965: Support GL_FIXED and packed vertex formats natively on Haswell+.Kenneth Graunke2013-01-072-12/+58
| | | | | | | Haswell and later support the GL_FIXED and 2_10_10_10_rev vertex formats natively, and don't need shader workarounds. Reviewed-by: Eric Anholt <[email protected]>
* i965: Add #defines for GL_FIXED vertex formats.Kenneth Graunke2013-01-071-0/+4
| | | | Reviewed-by: Eric Anholt <[email protected]>
* i965: Add remaining #defines for packed vertex formats.Kenneth Graunke2013-01-071-0/+9
| | | | Reviewed-by: Eric Anholt <[email protected]>
* i965: Use Haswell's sample_d_c for textureGrad with shadow samplers.Kenneth Graunke2013-01-074-5/+17
| | | | | | The new hardware actually just supports this now. Reviewed-by: Eric Anholt <[email protected]>
* i965/fs: Remove dead code from generate_uniform_pull_constant_load_gen7.Kenneth Graunke2013-01-071-2/+0
| | | | | | | generate_uniform_pull_constant_load_gen7() is only called on Gen7+, so the gen < 6 code is dead. Reviewed-by: Eric Anholt <[email protected]>
* mesa: Don't use rtasm for Haiku swrastAlexander von Gluck IV2013-01-071-1/+1
| | | | | | | | | * We have a symbol conflict as rtasm in Mesa collides with rtasm in gallium. * As us linking gallium and mesa together is an edge case, lets just omit the rtasm code from Mesa as we should be going llvmpipe soon :)
* r600g: set the virtual address for the htile bufferAlex Deucher2013-01-072-2/+4
| | | | | | | | | Fixes cayman and TN with htile enabled. Should fix: https://bugs.freedesktop.org/show_bug.cgi?id=59089 https://bugs.freedesktop.org/show_bug.cgi?id=58667 Possibly others. Signed-off-by: Alex Deucher <[email protected]>
* radeon/winsys: move radeon family/class identification to winsysJerome Glisse2013-01-0713-176/+227
| | | | | | | | Upcoming async dma support rely on winsys knowing about GPU families. Signed-off-by: Jerome Glisse <[email protected]> Reviewed-by: Alex Deucher <[email protected]> Reviewed-by: Marek Olšák <[email protected]>
* r600g/radeon/winsys: indentation cleanupJerome Glisse2013-01-074-13/+12
| | | | | | Signed-off-by: Jerome Glisse <[email protected]> Reviewed-by: Alex Deucher <[email protected]> Reviewed-by: Marek Olšák <[email protected]>
* r600g: flush FMASK and CMASK at the end of CSMarek Olšák2013-01-061-1/+3
|
* r300g: implement MSAAMarek Olšák2013-01-0614-149/+458
| | | | | | | | | | | | | | | | | | | | | | This is not as optimized as r600g - the MSAA compression is missing, so r300g needs a lot of bandwidth (more than r600g to do the same thing). However, if the bandwidth is not an issue for you, you can enjoy this unoptimized MSAA support. The only other missing optimization for MSAA is the fast color clear. MSAA is enabled on r500 only, because that's the only GPU family I tested. That said, MSAA should work on r300 and r400 as well (but you must set RADEON_MSAA=1 to allow it, then turn MSAA on in your app or set GALLIUM_MSAA=n, n >= 2, n <= 6) I will enable the support by default on r300-r400 once someone (other than me) tests those chipsets with piglit. The supported modes are 2x, 4x, 6x. The supported MSAA formats are RGBA8, BGRA8, and RGBA16F (r500 only). Those 3 formats are used for all GL internal formats. Tested with piglit. (I have ported all MSAA tests to GL2.1)
* r300g: simplify DSA state, add ability to patch FG_ALPHA_FUNC while emittingMarek Olšák2013-01-063-79/+46
| | | | Preparation for MSAA and alpha-to-coverage.
* r300g/compiler: add shader emulation for the alpha_to_one stateMarek Olšák2013-01-065-0/+41
|
* intel: Fix copy-and-paste bug setting gl_constants::MaxSamplesIan Romanick2013-01-041-1/+1
| | | | | | | | | | gl_constants::MaxSamples is an integer, so setting it to 1.0 is just silly. Signed-off-by: Ian Romanick <[email protected]> Reviewed-by: Kenneth Graunke <[email protected]> Reviewed-by: Chris Forbes <[email protected]> Reviewed-by: Eric Anholt <[email protected]>
* mesa: Disallow R, RG, or RGB integer and unsigned formats in OpenGL ES 3.0Ian Romanick2013-01-041-4/+2
| | | | | | | Signed-off-by: Ian Romanick <[email protected]> Reviewed-by: Marek Olšák <[email protected]> Reviewed-by: Kenneth Graunke <[email protected]> Reviewed-by: Eric Anholt <[email protected]>
* mesa: Disallow SNORM formats for renderbuffers in OpenGL ESIan Romanick2013-01-041-16/+4
| | | | | | | | | | v2: Move {RED,RG,RGB,RGBA}_SNORM changes from the previous commit to this commit. Based on suggestions from Ken. Signed-off-by: Ian Romanick <[email protected]> Reviewed-by: Marek Olšák <[email protected]> Reviewed-by: Kenneth Graunke <[email protected]> Reviewed-by: Eric Anholt <[email protected]>
* mesa: Disallow deprecated SNORM formats for renderbuffersIan Romanick2013-01-041-18/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The OpenGL 3.2 core profile spec says: "The following base internal formats from table 3.11 are color-renderable: RED, RG, RGB, and RGBA. The sized internal formats from table 3.12 that have a color-renderable base internal format are also color-renderable. No other formats, including compressed internal formats, are color-renderable." The OpenGL 3.2 compatibility profile spec says (only ALPHA is added): "The following base internal formats from table 3.16 are color-renderable: ALPHA, RED, RG, RGB, and RGBA. The sized internal formats from table 3.17 that have a color-renderable base internal format are also color-renderable. No other formats, including compressed internal formats, are color-renderable." Table 3.12 in the core profile spec and table 3.17 in the compatibility profile spec list SNORM formats as having a base internal format of RED, RG, RGB, or RGBA. From this we infer that they should also be color renderable. The OpenGL ES 3.0 spec says: "An internal format is color-renderable if it is one of the formats from table 3.12 noted as color-renderable or if it is unsized format RGBA or RGB. No other formats, including compressed internal formats, are color-renderable." In the OpenGL ES 3.0 spec, none of the SNORM formats have "color- renderable" marked in table 3.12. The RGB I and UI formats also are not color-renderable in ES3, but we'll save that change for another patch. Both NVIDIA's closed-source driver (version 304.64) and AMD's closed-source driver (Catalyst 12.6 on HD 3650) reject *all* SNORM formats for renderbuffers in OpenGL 3.3 compatibility profiles. v2: Move {RED,RG,RGB,RGBA}_SNORM changes from the this commit to the next commit. Based on suggestions from Ken. Signed-off-by: Ian Romanick <[email protected]> Reviewed-by: Marek Olšák <[email protected]> Reviewed-by: Kenneth Graunke <[email protected]> Reviewed-by: Eric Anholt <[email protected]>
* util: fix addressing bug in pipe_put_tile_z() for PIPE_FORMAT_Z32_FLOATBrian Paul2013-01-041-1/+1
| | | | | | The Z32 pixel is 4 bytes so multiply x by 4, not 2. Note: This is a candidate for the stable branches.
* util: add get/put_tile_z() support for PIPE_FORMAT_Z32_FLOAT_S8X24_UINTBrian Paul2013-01-041-0/+36
| | | | | | Fixes https://bugs.freedesktop.org/show_bug.cgi?id=58972 Note: This is a candidate for the stable branches.
* gallivm: support more immediates in lp_build_tgsi_info()Brian Paul2013-01-041-1/+1
| | | | | | Bump limit from 32 to 128. Fixes http://bugs.freedesktop.org/show_bug.cgi?id=58545
* xlib: allow GLX_DONT_CARE for glXChooseFBConfig() attribute valuesBrian Paul2013-01-041-0/+14
| | | | | | | | Fixes piglit glx-dont-care-mask test. Note: This is a candidate for the stable branches. Reviewed-by: Chad Versace <[email protected]>
* st/glx: allow GLX_DONT_CARE for glXChooseFBConfig() attribute valuesBrian Paul2013-01-041-0/+14
| | | | | | | | Fixes piglit glx-dont-care-mask test. Note: This is a candidate for the stable branches. Reviewed-by: Chad Versace <[email protected]>
* radeon/llvm: Remove backend code from MesaTom Stellard2013-01-0499-19168/+0
| | | | | | | | | | | | This code now lives in an external tree. For the next Mesa release fetch the code from the master branch of this LLVM repo: http://cgit.freedesktop.org/~tstellar/llvm/ For all subsequent Mesa releases, fetch the code from the official LLVM project: www.llvm.org