summaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2015-02-11applegl: Provide requirements of _SET_DrawBuffersdarwin-build-fixesJon TURNEY2-1/+7
_SET_DrawBuffers requires driDispatchRemapTable, so we need to link with libmesa for remap.c. libmesa requires the C++ linker. Also need to arrange to call _mesa_init_remap_table() to initialize the remap table. XXX: There has to be a better way fixing this. Signed-off-by: Jon TURNEY <jon.turney@dronecode.org.uk>
2015-02-11darwin: Suppress type conversion warnings for GLhandleARBJon TURNEY1-3/+3
On darwin, GLhandleARB is defined as a void *, not the unsigned int it is on linux. For the moment, apply a cast to supress the warning Possibly this is safe, as for the mesa software renderer the shader program handle is not a real pointer, but a integer handle Probably this is not the right thing to do, and we should pay closer attention to how the GLhandlerARB type is used. main/shader_query.cpp:49:7: error: no matching function for call to '_mesa_lookup_shader_program_err' _mesa_lookup_shader_program_err(ctx, program, "glBindAttribLocation"); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../../src/mesa/main/shaderobj.h:81:1: note: candidate function not viable: cannot convert argument of incomplete type 'GLhandleARB' (aka 'void *') to 'GLuint' (aka 'unsigned int') _mesa_lookup_shader_program_err(struct gl_context *ctx, GLuint name, ^ main/shader_query.cpp:111:13: error: no matching function for call to '_mesa_lookup_shader_program_err' shProg = _mesa_lookup_shader_program_err(ctx, program, "glGetActiveAttrib"); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../../src/mesa/main/shaderobj.h:81:1: note: candidate function not viable: cannot convert argument of incomplete type 'GLhandleARB' (aka 'void *') to 'GLuint' (aka 'unsigned int') _mesa_lookup_shader_program_err(struct gl_context *ctx, GLuint name, ^ main/shader_query.cpp:218:7: error: no matching function for call to '_mesa_lookup_shader_program_err' _mesa_lookup_shader_program_err(ctx, program, "glGetAttribLocation"); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../../src/mesa/main/shaderobj.h:81:1: note: candidate function not viable: cannot convert argument of incomplete type 'GLhandleARB' (aka 'void *') to 'GLuint' (aka 'unsigned int') _mesa_lookup_shader_program_err(struct gl_context *ctx, GLuint name, Signed-off-by: Jon TURNEY <jon.turney@dronecode.org.uk>
2015-02-11swrast: Build fix for darwinJeremy Huddleston Sequoia1-0/+16
Fixes regression from commit 64b1dc44495890cbc2c7c5509cb830264020998c Signed-off-by: Jeremy Huddleston Sequoia <jeremyhu@apple.com> CC: Emil Velikov <emil.l.velikov@gmail.com> CC: jon.turney@dronecode.org.uk CC: ionic@macports.org
2015-02-10darwin: build fixJeremy Huddleston Sequoia1-0/+5
xfont.c:237:14: error: implicit declaration of function 'GetGLXDRIDrawable' is invalid in C99 [-Werror,-Wimplicit-function-declaration] glxdraw = GetGLXDRIDrawable(CC->currentDpy, CC->currentDrawable); ^ Fixes regression from 291be28476ea60c6fb1eb2a882e2e25def5d3735 Signed-off-by: Jeremy Huddleston Sequoia <jeremyhu@apple.com>
2015-02-10darwin: build fixJeremy Huddleston Sequoia1-0/+1
../../../src/mesa/main/compiler.h:47:10: fatal error: 'util/macros.h' file not found Signed-off-by: Jeremy Huddleston Sequoia <jeremyhu@apple.com>
2015-02-10glsl: Optimize 1/exp(x) into exp(-x).Matt Turner1-0/+6
Lots of shaders divide by exp2(...) which we turn into a multiplication by the reciprocal. We can avoid the reciprocal by simply negating exp2's argument. total instructions in shared programs: 5947154 -> 5946695 (-0.01%) instructions in affected programs: 118661 -> 118202 (-0.39%) helped: 380 Reviewed-by: Jason Ekstrand <jason.ekstrand@intel.com> Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
2015-02-10nir: Remove casts from void*.Matt Turner4-14/+13
Reviewed-by: Connor Abbott <cwabbott0@gmail.com>
2015-02-10nir: Replace assert(0) with unreachable().Matt Turner1-7/+7
Reviewed-by: Connor Abbott <cwabbott0@gmail.com>
2015-02-10nir: Remove unused has_indirect variable.Matt Turner1-4/+0
Reviewed-by: Jason Ekstrand <jason.ekstrand@intel.com>
2015-02-10i965/vec4: Emit MADs from (x + abs(y * z)).Matt Turner1-3/+15
Same as commit 3654b6d4 to the fs backend. total instructions in shared programs: 5945788 -> 5945787 (-0.00%) instructions in affected programs: 36 -> 35 (-2.78%) helped: 1 Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
2015-02-10i965/vec4: Emit MADs from (x + -(y * z)).Matt Turner1-0/+12
Same as commit c4fab711 to the fs backend. total instructions in shared programs: 5945998 -> 5945788 (-0.00%) instructions in affected programs: 74665 -> 74455 (-0.28%) helped: 399 HURT: 180 It hurts some programs because we make no attempts in the vec4 backend to avoid MADs if they have constant (or vector uniform) arguments. Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
2015-02-10i965/skl: Implement WaDisable1DDepthStencilNeil Roberts1-0/+12
Skylake+ doesn't support setting a depth buffer to a 1D surface but it does allow pretending it's a 2D texture with a height of 1 instead. This fixes the GL_DEPTH_COMPONENT_* tests of the copyteximage piglit test (and also seems to avoid a subsequent GPU hang). Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=89037 Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
2015-02-10i965/gen7-8: Implement glMemoryBarrier().Francisco Jerez2-0/+41
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
2015-02-10i965: Generalize the update_null_renderbuffer_surface vtbl hook to ↵Francisco Jerez4-56/+55
non-renderbuffers. Null surfaces are going to be useful to have something to point unbound image units to, as the ARB_shader_image_load_store extension requires us to behave deterministically in cases where some shader tries to access an unbound image unit: Invalid stores and atomics are supposed to be discarded and invalid loads are supposed to return zero, which is precisely what the null surface does. Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
2015-02-10i965: Allocate binding table space for shader images.Francisco Jerez2-0/+12
v2: Bump the number of supported image uniforms to 32 (Ken). Reviewed-by: Paul Berry <stereotype441@gmail.com> Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
2015-02-10i965: Don't tile 1D miptrees.Francisco Jerez1-0/+7
It doesn't really improve locality of texture fetches, quite the opposite it's a waste of memory bandwidth and space due to tile alignment. v2: Check mt->logical_height0 instead of mt->target (Ken). Add short comment explaining why they shouldn't be tiled. Reviewed-by: Neil Roberts <neil@linux.intel.com> Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
2015-02-10i965/vec4: Don't set any dependency control bits for F32TO16 on Gen8.Francisco Jerez1-0/+5
It's expanded to several instructions. Reviewed-by: Matt Turner <mattst88@gmail.com>
2015-02-10i965: Handle negated unsigned immediate values in constant propagation.Francisco Jerez3-19/+19
Negation of UD/UW sources behaves the same as for D/W sources, taking the two's complement of the source, except for bitwise logical operations on Gen8 and up which take the one's complement. Fixes crash in a GLSL shader with subtraction of two unsigned values. Reviewed-by: Matt Turner <mattst88@gmail.com>
2015-02-10i965/vec4: Take into account non-zero reg_offset during register allocation.Francisco Jerez1-1/+3
Reviewed-by: Matt Turner <mattst88@gmail.com>
2015-02-10i965/vec4: Add register classes up to MAX_VGRF_SIZE.Francisco Jerez3-7/+9
In preparation for some send from GRF instructions that will require larger payloads. Reviewed-by: Matt Turner <mattst88@gmail.com>
2015-02-10i965/vec4: Init mlen for several send from GRF instructions.Francisco Jerez3-5/+11
Reviewed-by: Matt Turner <mattst88@gmail.com>
2015-02-10i965/vec4: Don't infer MRF dependencies for send from GRF instructions.Francisco Jerez1-14/+18
Reviewed-by: Matt Turner <mattst88@gmail.com>
2015-02-10i965/vec4: Fix the scheduler to take into account reads and writes of ↵Francisco Jerez3-5/+29
multiple registers. v2: Avoid nested ternary operators in vec4_instruction::regs_read(). (Matt) Reviewed-by: Matt Turner <mattst88@gmail.com>
2015-02-10i965/vec4: Make vec4_visitor::implied_mrf_writes() return zero for sends ↵Francisco Jerez1-1/+1
from GRF. Reviewed-by: Matt Turner <mattst88@gmail.com>
2015-02-10i965/vec4: Pass dst register to the vec4_instruction constructor.Francisco Jerez1-7/+5
So regs_written gets initialized with a sensible value. Reviewed-by: Matt Turner <mattst88@gmail.com>
2015-02-10i965/vec4: Initialize vec4_instruction::predicate and ::predicate_inverse.Francisco Jerez1-0/+2
Reviewed-by: Matt Turner <mattst88@gmail.com>
2015-02-10i965/vec4: Implement equals() method for dst_reg too.Francisco Jerez2-0/+18
Reviewed-by: Matt Turner <mattst88@gmail.com>
2015-02-10i965/fs: Fix fs_inst::regs_written calculation for instructions with scalar dst.Francisco Jerez1-1/+2
Scalar registers are required to have zero stride, fix the regs_written calculation not to assume that the instruction writes zero registers in that case. v2: Rename CEILING() to DIV_ROUND_UP(). (Matt, Ken) Reviewed-by: Kenneth Graunke <kenneth@whitecape.org> Reviewed-by: Matt Turner <mattst88@gmail.com>
2015-02-10i965/fs: Fix stack allocation of fs_inst and stop stealing src array ↵Francisco Jerez2-37/+39
provided on construction. Using 'ralloc*(this, ...)' is wrong if the object has automatic storage or was allocated through any other means. Use normal dynamic memory instead. Reviewed-by: Matt Turner <mattst88@gmail.com>
2015-02-10i965/fs: Remove duplicate include of brw_shader.hFrancisco Jerez1-1/+0
The second one was inside an extern "C" block, luckily it was being discarded by the preprocessor. Reviewed-by: Matt Turner <mattst88@gmail.com>
2015-02-10i965: Move up fs_inst::flag_subreg to backend_instruction.Francisco Jerez5-7/+16
Reviewed-by: Matt Turner <mattst88@gmail.com>
2015-02-10i965: Move up fs_inst::regs_written to backend_instruction.Francisco Jerez3-1/+2
It will also be useful in the VEC4 back-end. Reviewed-by: Matt Turner <mattst88@gmail.com>
2015-02-10i965/vec4: Remove dependency of vec4_instruction on the visitor class.Francisco Jerez3-36/+32
The only reason why you need a vec4_visitor to construct a vec4_instruction is to initialize vec4_instruction::ir and ::annotation. Instead set them from vec4_visitor::emit() just like fs_visitor does. Reviewed-by: Matt Turner <mattst88@gmail.com>
2015-02-10i965/fs: Remove dependency of fs_inst on the visitor class.Francisco Jerez7-13/+12
The fs_visitor argument of fs_inst::regs_read() wasn't used at all. Reviewed-by: Matt Turner <mattst88@gmail.com>
2015-02-10i965: Move IR object definitions to separate header files.Francisco Jerez4-381/+450
One should be able to manipulate i965 IR without pulling the whole FS/VEC4 visitor classes -- Optimization passes and other transformations would ideally be visitor-agnostic. Among other issues this avoids a circular dependency between the header file where such visitor-agnostic code will be defined and the main FS/VEC4 header where both IR (layer below) and visitor (layer above) happen to be defined. Reviewed-by: Matt Turner <mattst88@gmail.com>
2015-02-10i965: Factor out virtual GRF allocation to a separate object.Francisco Jerez18-201/+235
Right now virtual GRF book-keeping and allocation is performed in each visitor class separately (among other hundred different things), leading to duplicated logic in each visitor and preventing layering as it forces any code that manipulates i965 IR and needs to allocate virtual registers to depend on the specific visitor that happens to be used to translate from GLSL IR. v2: Use realloc()/free() to allocate VGRF book-keeping arrays (Connor). Reviewed-by: Matt Turner <mattst88@gmail.com>
2015-02-10glsl: Forbid calling the constructor of any opaque type.Francisco Jerez1-3/+3
The spec doesn't define any opaque type constructors. Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
2015-02-10glsl: Return correct number of coordinate components for cubemap array images.Francisco Jerez1-2/+7
Cubemap array images are unlike cubemap array samplers in that they don't need an additional coordinate to index individual cubemaps in the array, instead they behave like a 2D array of 6n layers, with n the number of cubemaps in the array. Take this exception into account. Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
2015-02-10mesa: Bump MAX_IMAGE_UNIFORMS to 32.Francisco Jerez1-1/+1
So the i965 driver can expose 32 image uniforms per shader stage. Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
2015-02-10mesa: Rename the CEILING() macro to DIV_ROUND_UP().Francisco Jerez3-3/+3
Some people have complained that code using the CEILING() macro is difficult to understand because it's not immediately obvious what it is supposed to do until you go and look up its definition. Use a more descriptive name that matches the similar utility macro in the Linux kernel. Reviewed-by: Matt Turner <mattst88@gmail.com>
2015-02-10nv50,nvc0: Mark PIPE_QUERY_TIMESTAMP_DISJOINT as ready immediatelyTiziano Bacocco2-0/+6
Without this when an application issues that query, it would try to wait the result from the gpu, and since no query has been actually issued, it will wait forever. Signed-off-by: Tiziano Bacocco <tizbac2@gmail.com> Reviewed-by: Ilia Mirkin <imirkin@alum.mit.edu>
2015-02-10nv50/ir: Fold IMM into MADRoy Spliet1-0/+53
Add a specific optimisation pass for NV50 to check whether SRC0 or SRC1 is a MOV dst, IMM. If so: fold the IMM in and try to drop the MOV. Must be done post-RA because it requires that SDST == SSRC2. V2: improve readability and add comments to clarify decisions V3: Remove redundant code... compiler already attempts to put the IMM in SSRC1 Signed-off-by: Roy Spliet <rspliet@eclipso.eu> Reviewed-by: Ilia Mirkin <imirkin@alum.mit.edu>
2015-02-10nv50/ir: Add emit support for MAD IMM formatRoy Spliet1-0/+8
But don't enable generation of it in the opProperties, because we can't guarantee the SDST==SRC2 constraint until after register assignment. We'll add a post-RA folding pass to utilise this. Signed-off-by: Roy Spliet <rspliet@eclipso.eu> Reviewed-by: Ilia Mirkin <imirkin@alum.mit.edu>
2015-02-10nv50/ir: Add support for MAD 4-byte opcodeRoy Spliet2-8/+6
Add emission rules for negative and saturate flags for MAD 4-byte opcodes, and get rid of some of the constraints. Obviously tested with a wide variety of shaders. V2: Document MAD as supported short form V3: Split up IMM from short-form modifiers Signed-off-by: Roy Spliet <rspliet@eclipso.eu> Reviewed-by: Ilia Mirkin <imirkin@alum.mit.edu>
2015-02-10nv50/ir: change the way float face is returnedIlia Mirkin2-4/+6
The old way made it impossible for the optimizer to reason about what was going on. The new way is the same number of instructions (the neg gets folded into the cvt) but enables the optimizer to be cleverer if comparing to a constant (most common case). [The optimizer is presently not sufficiently clever to work this out, but it could relatively easily be made to be. The old way would have required significant complexity to work out.] Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
2015-02-10nir: Mark nir_print_instr's instr pointer as const.Kenneth Graunke2-3/+3
Printing instructions doesn't modify them, so we can mark the parameter const. Signed-off-by: Kenneth Graunke <kenneth@whitecape.org> Reviewed-by: Jason Ekstrand <jason.ekstrand@intel.com>
2015-02-09i965: Fix integer border color on Haswell.Kenneth Graunke3-0/+66
+82 Piglits - 100% of border color tests now pass on Haswell. Signed-off-by: Kenneth Graunke <kenneth@whitecape.org> Reviewed-by: Jason Ekstrand <jason.ekstrand@intel.com> Reviewed-by: Chris Forbes <chrisf@ijw.co.nz> Cc: mesa-stable@lists.freedesktop.org
2015-02-09i965: Use a gl_color_union for sampler border color.Kenneth Graunke1-53/+52
This should have no effect, but will make it easier to implement other bug fixes. v2: Eliminate "unsigned one" local; just use the value where necessary. Signed-off-by: Kenneth Graunke <kenneth@whitecape.org> Reviewed-by: Ian Romanick <ian.d.romanick@intel.com> Cc: mesa-stable@lists.freedesktop.org
2015-02-09i965: Override swizzles for integer luminance formats.Kenneth Graunke1-0/+8
The hardware's integer luminance formats are completely unusable; currently we fall back to RGBA. This means we need to override the texture swizzle to obtain the XXX1 values expected for luminance formats. Fixes spec/EXT_texture_integer/texwrap formats bordercolor [swizzled] on Broadwell - 100% of border color tests now pass on Broadwell. Signed-off-by: Kenneth Graunke <kenneth@whitecape.org> Reviewed-by: Ian Romanick <ian.d.romanick@intel.com> Reviewed-by: Chris Forbes <chrisf@ijw.co.nz> Cc: mesa-stable@lists.freedesktop.org
2015-02-09util/u_atomic: Add new macro p_atomic_addCarl Worth2-0/+21
This provides for atomic addition, which will be used by an upcoming shader-cache patch. A simple test is added to "make check" as well. Note: The various O/S functions differ on whether they return the original value or the value after the addition, so I did not provide an add_return() macro which would be sensitive to that difference. Reviewed-by: Matt Turner <mattst88@gmail.com> Reviewed-by: Aaron Watry <awatry@gmail.com> Reviewed-by: José Fonseca <jfonseca@vmware.com>