summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* freedreno/a3xx: re-emit shaders on variant changeRob Clark2014-09-292-1/+50
| | | | | | | | | We need to keep track if a state change other than frag/vert shader state will trigger us to need a different shader variant, and if necessary mark the appropriate shader state as dirty. Otherwise we will forget to re-emit the shader state. Signed-off-by: Rob Clark <[email protected]>
* freedreno/ir3: add some cmdline argsRob Clark2014-09-291-8/+87
| | | | Signed-off-by: Rob Clark <[email protected]>
* freedreno/a3xx: add support to emulate GL_CLAMPRob Clark2014-09-298-16/+129
| | | | Signed-off-by: Rob Clark <[email protected]>
* freedreno: add texcoord clamp support to loweringRob Clark2014-09-292-5/+173
| | | | | | | This is for hw that needs to emulate some texture wrap modes (like CLAMP) with some help from the shader. Signed-off-by: Rob Clark <[email protected]>
* freedreno: move bind_sampler_states to per-generationRob Clark2014-09-294-23/+48
| | | | | | | | | Keep the existing function as a common helper. But this lets us move an a2xx specific hack out of common code. And the PIPE_TEX_WRAP_CLAMP emulation will require an a3xx specific hack. So rather than piling on hacks, split this out. Signed-off-by: Rob Clark <[email protected]>
* freedreno/a3xx: fix border color orderRob Clark2014-09-291-5/+4
| | | | Signed-off-by: Rob Clark <[email protected]>
* freedreno/a3xx: add 32bit integer vtx formatsRob Clark2014-09-292-17/+37
| | | | Signed-off-by: Rob Clark <[email protected]>
* vc4: Add support for GL 1.1's stupid CLAMP mode.Eric Anholt2014-09-291-4/+19
| | | | | | We just clamp the incoming texture coordinates. This breaks the lambda calculation, but it gets the piglit tests to pass. This is the same behavior as in i965.
* vc4: Add support for texture border color.Eric Anholt2014-09-292-1/+84
| | | | | | | One spot in the docs says that it's stored at a miplevel just beyond the last miplevel, which was scary. But really, you just load it as the R coordinate (which conflicts with cubemaps, but you don't do border clamping on cubes).
* vc4: Add the necessary stubs for occlusion queries.Eric Anholt2014-09-294-1/+87
| | | | | | We have to expose them for GL 2.0, but we just always return a value of 0. We should be advertising 0 query bits instead of 64, but gallium doesn't have plumbing for that yet. At least this stops the segfaults.
* vc4: Optimize out silly SUBs of 0.Eric Anholt2014-09-291-0/+11
| | | | | Drops instructions on vs-temp-array-mat4-index-col-row-wr.shader_test, which I was looking at because it's failing to register allocate.
* vc4: Dump constant uniform values in VC4_DEBUG=qir.Eric Anholt2014-09-296-24/+32
| | | | Definitely helps when trying to understand and optimize a program.
* vc4: Turn a SEL_X_Y(x, 0) into SEL_X_0(x).Eric Anholt2014-09-291-14/+61
| | | | | | This may reduce register pressure and uniform counts. Drops a bunch of 0 uniform loads on vs-temp-array-mat4-index-col-row-wr.shader_test, which is failing to register allocate.
* vc4: Add support for texture cube maps.Eric Anholt2014-09-295-22/+84
| | | | | | It's not passing some of the piglit tests, because it looks like at small miplevels some contents from surrounding faces are getting filtered in at the corners. It does get 7 new tests passing.
* vc4: Rename the slice's size0.Eric Anholt2014-09-292-5/+5
| | | | | | In the other related fields, "0" refers to the size of the first miplevel, while this is a field in a slice. The other implicit slices we have (cubemap layers) don't vary in size compared to the first one.
* vc4: Stop trying to reuse temporaries that store uniform values.Eric Anholt2014-09-292-12/+0
| | | | | | | | | | | Almost always, the MOV will get copy propagated out. Even if it doesn't, it's probably better to just reload the uniform at next use (to reduce register pressure) rather than try to save instruction count. I was looking at this because in the presence of texturing (which calls add_uniform() directly to get the uniform load forced into the instruction) the c->uniform_contents indices don't match 1:1 with the temporary qregs.
* egl: setup screen iterator before using itTapani Pälli2014-09-291-1/+1
| | | | | | | | commit 4ed23fd broke creation of pbuffer surfaces, patch fixes the failure, noticed when running chrome with '--use-gl=egl'. Signed-off-by: Tapani Pälli <[email protected]> Reviewed-by: Juha-Pekka Heikkila <[email protected]>
* ilo: fix a missing 'else'Chia-I Wu2014-09-291-1/+1
| | | | | | An 'else' is missing in the disassembler. Signed-off-by: Chia-I Wu <[email protected]>
* glsl: Allow texture2DProjLod and textureCubeLod in GL ESKalyan Kondapally2014-09-291-3/+3
| | | | | | | | | | According to GLES (i.e. 1.0 and above) spec textureCubeLod and texture2DProjLod are built in functions. We seem to disable support for these functions with GLES. This patch enables the support. Signed-off-by: Kalyan Kondapally <[email protected]> Reviewed-by: Matt Turner <[email protected]> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=84355
* configure.ac: bump libdrm_freedreno requirementRob Clark2014-09-281-1/+1
| | | | | | We need 2.4.57 for fd_bo_dmabuf() / fd_bo_from_dmabuf(). Signed-off-by: Rob Clark <[email protected]>
* glsl: Recognize open-coded pow(x, y).Matt Turner2014-09-271-0/+14
| | | | | | | | pow(x, y) is equivalent to exp(log(x) * y). instructions in affected programs: 578 -> 458 (-20.76%) Reviewed-by: Kenneth Graunke <[email protected]>
* i965/fs: Don't invalidate live intervals in saturate propagation.Matt Turner2014-09-271-2/+1
| | | | Reviewed-by: Jason Ekstrand <[email protected]>
* i965/fs: Ignore mov.sat instructions in interference check in sat prop.Matt Turner2014-09-271-1/+2
| | | | | | | | | | | | When an instruction's result was consumed by multiple mov.sat instructions, we would decide that we couldn't move the saturate modifier because something else was using the result, even though it was just another mov.sat! total instructions in shared programs: 4275598 -> 4274842 (-0.02%) instructions in affected programs: 75634 -> 74878 (-1.00%) Reviewed-by: Jason Ekstrand <[email protected]>
* i965/fs: Walk instructions in reverse in saturate propagation.Matt Turner2014-09-271-3/+3
| | | | | | | | | | When we find a mov.sat, we search backwards. We might as well search everything else backwards as well and potentially look at fewer instructions. This change enables the next patch. Reviewed-by: Jason Ekstrand <[email protected]>
* freedreno/a3xx: add flat interpolation modeRob Clark2014-09-277-19/+60
| | | | Signed-off-by: Rob Clark <[email protected]>
* freedreno/a3xx: add LOD_BIASRob Clark2014-09-271-0/+1
| | | | Signed-off-by: Rob Clark <[email protected]>
* freedreno: turn missing caps into compile warningsRob Clark2014-09-271-10/+10
| | | | | | | | Get rid of the 'default' case (as suggestied by imirkin) so compiler warns us about missing caps. Also add some caps that were missing until now. Signed-off-by: Rob Clark <[email protected]>
* freedreno: we have more than 0 viewports!Rob Clark2014-09-271-0/+3
| | | | | | | | | 4155d1c7 'st/mesa: drop dependence on API profile in st_init_extensions' broke freedreno because somehow 'PIPE_CAP_MAX_VIEWPORTS' fell through the cracks. Resulting that we reported zero viewports. So the state tracker never bothered to give us any valid viewport! Signed-off-by: Rob Clark <[email protected]>
* freedreno: update generated headersRob Clark2014-09-274-17/+133
| | | | | | Among other things, fixes a bug for fixed point registers/bitfields. Signed-off-by: Rob Clark <[email protected]>
* freedreno: don't advertise mirror-clamp supportRob Clark2014-09-271-1/+1
| | | | | | At least on a3xx, we cannot do it without some emulation in shader. Signed-off-by: Rob Clark <[email protected]>
* freedreno: fix compiler warningRob Clark2014-09-271-0/+1
| | | | Signed-off-by: Rob Clark <[email protected]>
* configure.ac: Compute LLVM_VERSION_PATCH using llvm-configTom Stellard2014-09-271-5/+4
| | | | | | | | | This is the only guaranteed way get the patch level for llvm, since the define cannot always be found in config.h depending on the version of llvm or the build system used. CC: 10.2 10.3 <[email protected]> Reviewed-by: Jonathan Gray <[email protected]>
* Remove Bluegene/L wrappersEmil Velikov2014-09-272-10/+4
| | | | | | | | | Added back in 2009, with osmesa/GLU in mind. Unlikely to be working any more since the removal of the static makefiles. Cc: Brian Paul <[email protected]> Signed-off-by: Emil Velikov <[email protected]> Reviewed-by: Ian Romanick <[email protected]>
* mesa: remove last DJGPP remainsEmil Velikov2014-09-275-15/+6
| | | | | Signed-off-by: Emil Velikov <[email protected]> Reviewed-by: Ian Romanick <[email protected]>
* configure: use explicit enabled/disabled in config switch descriptionEmil Velikov2014-09-271-12/+12
| | | | | | | | | Rather than having double negatives -> disable-opencl, default=no simply use enabled/disabled. It makes things a bit easier for the reader and consistent throughout the file. Signed-off-by: Emil Velikov <[email protected]> Reviewed-by: Matt Turner <[email protected]>
* configure: ask vdpau.pc for the default location of the vdpau driversEmil Velikov2014-09-271-3/+8
| | | | | | | | | | | | | Rather than using hardcoded values honor the value set at libvdpau build time - i.e. the moduledir variable from vdpau.pc Update the omx description to match reality while we're here. Cc: Christian König <[email protected]> Cc: Alexandre Demers <[email protected]> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=80615 Signed-off-by: Emil Velikov <[email protected]> Reviewed-by: Matt Turner <[email protected]>
* configure: drop --with-egl-driver-dir switchEmil Velikov2014-09-273-9/+2
| | | | | | | | | | | | The location of the egl driver(s) is matter that we should have never exposed to the user. Currently the dri2 driver is built into the libEGL loader, with the gallium based one soon to follow. v2: Fold EGL_DRIVER_INSTALL_DIR within the makefiles. Suggested by Matt. Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=80615 Signed-off-by: Emil Velikov <[email protected]> Reviewed-by: Matt Turner <[email protected]>
* configure: remove non-functional --with-opencl-libdirEmil Velikov2014-09-271-8/+0
| | | | | | | | | | | | | | | | | | | | | The parameter used to control where the gallium pipe-drivers were installed, but was broken since commit 45270fb0fd1abd7619933c2845f9dc74cdfbe6fd Author: Matt Turner <[email protected]> Date: Thu Sep 13 10:45:01 2012 -0700 targets/pipe-loader: Convert to automake Considering that nowadays the pipe-drivers can be used by more than just the opencl target, even fixing this up will not be the best idea. Cc: Matt Turner <[email protected]> Cc: Francisco Jerez <[email protected]> Buzilla: https://bugs.freedesktop.org/show_bug.cgi?id=61415 Signed-off-by: Emil Velikov <[email protected]> Reviewed-by: Matt Turner <[email protected]>
* glsl: Strip arrayness from ir_type_dereference_variable tooIan Romanick2014-09-261-1/+1
| | | | | | | | | | | | If the thing being dereferenced is a record or an array of records, it should be treated as row-major. The ir_type_derference_record path already does this, and I think I intended to do the same for this path in b17a4d5d. Signed-off-by: Ian Romanick <[email protected]> Reviewed-by: Jordan Justen <[email protected]> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=83741 Cc: [email protected]
* glsl: Round struct size up to at least 16 bytesIan Romanick2014-09-261-1/+1
| | | | | | | | | | | Per rule #9, the size of the structure is vec4 aligned. The MAX2 in the loop ensures that sizes >= 16 bytes are vec4 aligned. The new MAX2 after the loop ensures that sizes < 16 bytes are vec4 aligned. Signed-off-by: Ian Romanick <[email protected]> Reviewed-by: Jordan Justen <[email protected]> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=82932 Cc: [email protected]
* glsl: Make sure row-major array-of-structure get correct layoutIan Romanick2014-09-261-1/+8
| | | | | | | | | | | Whether or not the field is row-major (because it might be a bvec2 or something) does not affect the array itself. We need to know whether an array element in its entirety is row-major. Signed-off-by: Ian Romanick <[email protected]> Reviewed-by: Jordan Justen <[email protected]> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=83506 Cc: [email protected]
* glsl: Make sure fields after small structs have correct paddingIan Romanick2014-09-261-0/+22
| | | | | | | | | | | Previously the linker would correctly calculate the layout, but the lower_ubo_reference pass would not apply correct alignment to fields following small (less than 16-byte) nested structures. Signed-off-by: Ian Romanick <[email protected]> Reviewed-by: Jordan Justen <[email protected]> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=83533 Cc: [email protected]
* ilo: give gen6_draw_session a better prefixChia-I Wu2014-09-266-74/+74
| | | | | | gen6_draw_session is not GEN dependent. Rename it to ilo_render_draw_session. Signed-off-by: Chia-I Wu <[email protected]>
* ilo: make ilo_render opaqueChia-I Wu2014-09-267-94/+90
| | | | | | | It is not used outside the render code. There are also too many details in it that we do not want other components to access directly. Signed-off-by: Chia-I Wu <[email protected]>
* ilo: make ilo_render_emit_draw() directChia-I Wu2014-09-268-295/+174
| | | | | | | Remove emit_draw() and ILO_RENDER_DRAW indirections. With all emit functions being direct now, ilo_render_estimate_size() and more can also be removed. Signed-off-by: Chia-I Wu <[email protected]>
* ilo: make ilo_render_emit_rectlist() directChia-I Wu2014-09-266-53/+84
| | | | | | Remove emit_rectlist() and ILO_RENDER_RECTLIST indirections. Signed-off-by: Chia-I Wu <[email protected]>
* ilo: clean up draw and rectlist state emissionChia-I Wu2014-09-266-812/+972
| | | | | | | | | | | | | | | | Add these new high-level functions ilo_render_get_draw_dynamic_states_len() ilo_render_emit_draw_dynamic_states() ilo_render_get_rectlist_dynamic_states_len() ilo_render_emit_rectlist_dynamic_states() ilo_render_get_draw_surface_states_len() ilo_render_emit_draw_surface_states() for draw and rectlist state emission. They are implemented in the new ilo_render_dynamic.c and ilo_render_surface.c. Signed-off-by: Chia-I Wu <[email protected]>
* ilo: sanity check ilo_render_get_*_len()Chia-I Wu2014-09-261-5/+12
| | | | | | Assert that we never write more than what ilo_render_get_*_len() returns. Signed-off-by: Chia-I Wu <[email protected]>
* ilo: simplify ilo_render_get_query_len()Chia-I Wu2014-09-261-25/+12
| | | | | | | For all supported query types, we always emit a PIPE_CONTROL. Call ilo_render_get_flush_len() for simplicity and clarity. Signed-off-by: Chia-I Wu <[email protected]>
* ilo: make ilo_render_emit_query() directChia-I Wu2014-09-266-173/+159
| | | | | | Remove emit_query() and ILO_RENDER_QUERY indirections. Signed-off-by: Chia-I Wu <[email protected]>