aboutsummaryrefslogtreecommitdiffstats
path: root/src/mesa
Commit message (Collapse)AuthorAgeFilesLines
* draw: add support for num_samples + sample_stride to the image pathsDave Airlie2020-05-061-2/+2
| | | | | Reviewed-by: Roland Scheidegger <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4122>
* draw: introduce sampler num samples + stride membersDave Airlie2020-05-061-1/+1
| | | | | | | | This adds the num samples + sampler stride into the texture mapping paths, currently drivers just pass 0 for now. Reviewed-by: Roland Scheidegger <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4122>
* gallium: add a new cap PIPE_CAP_GLSL_ZERO_INITPierre-Eric Pelloux-Prayer2020-05-052-2/+8
| | | | | | | Allows driver to select a zero init mode between the 3 possible values. Reviewed-by: Marek Olšák <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4607>
* mesa: extend GLSLZeroInit semanticsPierre-Eric Pelloux-Prayer2020-05-053-4/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | This commit introduces a new way to zero-init variables but keep the old one to not break any existing behavior. With this change GLSLZeroInit becomes an integer, with the following possible values: - 0: no 0 init - 1: current behavior - 2: new behavior. Similar to 1, except ir_var_function_out type are 0 initialized but ir_var_shader_out. The rationale behind 2 is: zero initializing ir_var_shader_out can prevent some optimization where out variables are completely eliminated when not written to. On the other hand, zero initializing "ir_var_function_out" has no effect on correct shaders but typically helps shadertoy since the main function is: void mainImage(out vec4 fragColor) { ... } So with this change we're sure that fragColor will always get a value. Reviewed-by: Marek Olšák <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4607>
* mesa/st: consider NumUniformBlocks instead of num_ubos when bindingErik Faye-Lund2020-05-052-2/+2
| | | | | | | | | This is the number of uniform blocks at linking time, not after finalizing shaders. Reviewed-by: Alyssa Rosenzweig <[email protected]> Reviewed-by: Eric Anholt <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4734>
* compiler/glsl: explicitly store NumUniformBlocksErik Faye-Lund2020-05-051-0/+1
| | | | | | | | | | | It's not great to use shader_info for this information, because it might have gone through lowering of uniforms to UBOs, which can change the number of UBOs. So let's make sure we know the size of the UniformBlocks array from when the shader was linked instead. Reviewed-by: Alyssa Rosenzweig <[email protected]> Reviewed-by: Eric Anholt <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4734>
* driconf: add force_integer_tex_nearest optionPierre-Eric Pelloux-Prayer2020-05-051-0/+2
| | | | | | | | | | And enable it for "GRID Autosport" and "DIRT: Showdown" games. CC: 20.1 <[email protected]> Closes: https://gitlab.freedesktop.org/mesa/mesa/issues/1258 Reviewed-by: Timothy Arceri <[email protected]> Reviewed-by: Marek Olšák <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4647>
* mesa: add gl_coontext::ForceIntegerTexNearestPierre-Eric Pelloux-Prayer2020-05-056-19/+52
| | | | | | | | | | | | | Some applications incorrectly use GL_LINEAR* values for integers texture. copyimage.c already implemented a tolerance for such app in prepare_target_err. This commit adds a boolean that will treat GL_LINEAR* filters as GL_NEAREST for integer textures. CC: 20.1 <[email protected]> Reviewed-by: Timothy Arceri <[email protected]> Reviewed-by: Marek Olšák <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4647>
* st/mesa: destroy only own program variants when program is releasedTapani Pälli2020-05-041-1/+3
| | | | | | | | | | | | Earlier commit tried to achieve this but actually did more. This makes sure the variants for other contexts continue to live. Fixes: de3d7dbed52 ("mesa/st: release variants for active programs before unref") Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/2865 Cc: [email protected] Signed-off-by: Tapani Pälli <[email protected]> Reviewed-by: Marek Olšák <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4831>
* mesa: check draw buffer completeness on glClearBufferfv/glClearBufferuivDmitriy Nester2020-05-041-0/+12
| | | | | | | | | | | | | | | | From OpenGL 4.6, section 9.4.4 "Effects of Framebuffer Completeness on Framebuffer Operations", page 332: "An INVALID_FRAMEBUFFER_OPERATION error is generated by attempts to render to or read from a framebuffer which is not framebuffer complete. This error is generated regardless of whether fragments are actually read from or written to the framebuffer. For example, it is generated when a rendering command is called and the framebuffer is incomplete, even if RASTERIZER_DISCARD is enabled." Signed-off-by: Dmytro Nester <[email protected]> Reviewed-by: Marek Olšák <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4833>
* i965: disable shadow batches when batch debugging.Dave Airlie2020-05-031-1/+5
| | | | | | | | | | If you want to dump batch state, it needs to have the relocs processed but the relocs don't get processed on the shadow batch. Choose debugging over speed here. Reviewed-by: Lionel Landwerlin <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4846>
* intel: Let drivers call brw_nir_lower_cs_intrinsics()Caio Marcelo de Oliveira Filho2020-05-011-0/+2
| | | | | | | | | | | | | | The motivating factor is: this lowering may cause nir_intrinsic_load_local_group_size intrinsics to be added to the shader, and by moving this around we make possible for the drivers to lower that intrinsic by themselves. Iris will do just that in a later patch for implementing variable group size. Reviewed-by: Kenneth Graunke <[email protected]> Reviewed-by: Jordan Justen <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4794>
* intel/fs: Add an option to lower variable group size in backendCaio Marcelo de Oliveira Filho2020-05-011-0/+1
| | | | | | | | | Adding this since Iris will handle variable group size parameters by itself. Reviewed-by: Kenneth Graunke <[email protected]> Reviewed-by: Jordan Justen <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4794>
* intel/fs: Clean up variable group size handling in backendCaio Marcelo de Oliveira Filho2020-05-011-3/+0
| | | | | | | | Just use the information from NIR shader_info. Reviewed-by: Kenneth Graunke <[email protected]> Reviewed-by: Jordan Justen <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4794>
* glthread: Add GLAPIENTRY to _mesa_marshal_MultiDrawArrays.Jose Fonseca2020-05-011-1/+1
| | | | | | Fixes MSVC build. Trivial. Fixes: 2840bc3065b9e991b2c5880a2ee02e2458a758c4
* glthread: upload non-VBO vertices and indices for non-Indirect non-IBM drawsMarek Olšák2020-04-305-0/+992
| | | | | | This is basically the same thing u_vbuf does. Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4314>
* glthread: handle gl{Push,Pop}ClientAttrib{DefaultEXT} for glthread statesMarek Olšák2020-04-302-0/+105
| | | | Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4314>
* glthread: handle POS vs GENERIC0 aliasingMarek Olšák2020-04-302-3/+10
| | | | Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4314>
* glthread: initialize VAOs properlyMarek Olšák2020-04-303-0/+33
| | | | Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4314>
* glthread: track primitive restart stateMarek Olšák2020-04-303-0/+63
| | | | Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4314>
* glthread: track instance divisor changesMarek Olšák2020-04-302-11/+35
| | | | Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4314>
* glthread: track pointers and strides for Pointer & EXT_dsa attrib functionsMarek Olšák2020-04-302-12/+59
| | | | Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4314>
* glthread: don't use atomics for refcounting to decrease overhead on AMD ZenMarek Olšák2020-04-302-1/+33
| | | | | Reviewed-by: Pierre-Eric Pelloux-Prayer <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4314>
* glthread: do glBufferSubData as unsynchronized upload + GPU copyMarek Olšák2020-04-304-2/+138
| | | | | | | | | | | | 1. glthread has a private upload buffer (as struct gl_buffer_object *) 2. the new function glInternalBufferSubDataCopyMESA is used to execute the copy (the source buffer parameter type is struct gl_buffer_object * as GLintptr) Now glthread can handle arbitrary glBufferSubData sizes without syncing. This is a good exercise for uploading data outside of the driver thread. Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4314>
* mesa: add _mesa_InternalBind{ElementBuffer,VertexBuffers} for glthreadMarek Olšák2020-04-305-0/+62
| | | | | | Uploaded non-VBO user data will be set via these functions. Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4314>
* mesa: add glInternalBufferSubDataCopyMESA for glthreadMarek Olšák2020-04-304-1/+51
| | | | Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4314>
* mesa: inline vbo_context inside gl_context to remove vbo_context dereferencesMarek Olšák2020-04-306-157/+151
| | | | | | | | | | The number of lines in the disassembly of vbo_exec_api.c.o decreased by 4.5%, which roughly corresponds to a decrease in instructions for immediate mode thanks to the removal of ctx->vbo_context dereferences. It increases performance in one Viewperf11 subtest by 2.8%. Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4314>
* mesa,st/mesa: add a fast path for non-static VAOsMarek Olšák2020-04-305-0/+64
| | | | | | | | | | | | | Skip most of _mesa_update_vao_derived_arrays if the VAO is not static. Drivers need a separate codepath for this. This increases performance by 7% with glthread and the game "torcs". The reason is that glthread uploads vertices and sets vertex buffers every draw call, so the overhead is very noticable. glthread doesn't hide the overhead, because the driver thread is the busiest thread. Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4314>
* mesa: don't update shaders on fixed-func state changes if user shaders are boundMarek Olšák2020-04-302-3/+28
| | | | Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4314>
* mesa: don't set unnecessary program flags in _mesa_update_stateMarek Olšák2020-04-301-2/+1
| | | | | | | _NEW_PROGRAM is already set. _NEW_FRAG_CLAMP is not used by the fixed-func fragment shader. Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4314>
* mesa: set _NEW_FRAG_CLAMP only when neededMathias Fröhlich2020-04-301-3/+5
| | | | | Reviewed-by: Marek Olšák <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4314>
* mesa: don't call _mesa_update_state for _mesa_get_clamp_fragment_colorMarek Olšák2020-04-304-18/+4
| | | | | | It's not needed. Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4314>
* st/mesa: Move _NEW_FRAG_CLAMP to NewFragClamp driver flag.Mathias Fröhlich2020-04-305-12/+21
| | | | | Reviewed-by: Marek Olšák <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4314>
* mesa: optimize glPush/PopClientAttrib by removing malloc overheadMarek Olšák2020-04-304-137/+46
| | | | | | | | just declare all structures needed by the stack in gl_context. This improves performance by 5.6% in the game "torcs". FPS: 101.01 -> 106.73 Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4314>
* i965: remove unused variableMarcin Ślusarz2020-04-291-2/+0
| | | | | | | | Last use was removed in 54525808aa58. Signed-off-by: Marcin Ślusarz <[email protected]> Reviewed-by: Jason Ekstrand <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4809>
* gallium: add pipe cap for scissored clears and pass scissor state to clear() ↵Mike Blumenkrantz2020-04-293-2/+32
| | | | | | | | | | | | | | | | hook this adds a new pipe cap that drivers can support which enables passing buffer clears with scissor test enabled through to be handled by the driver instead of having mesa draw a quad also adjust all existing clear() hooks to have the new parameter Reviewed-by: Marek Olšák <[email protected]> Reviewed-by: Vasily Khoruzhick <[email protected]> Reviewed-by: Kristian H. Kristensen <[email protected]> Reviewed-by: Kenneth Graunke <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4310>
* i965: Use correct constant for max_variable_local_sizeCaio Marcelo de Oliveira Filho2020-04-291-1/+1
| | | | | | Fixes: 5664bd6db38 ("i965: Implement ARB_compute_variable_group_size") Reviewed-by: Jordan Justen <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4799>
* st/mesa: expose more SPIR-V capabilitiesMarek Olšák2020-04-291-0/+12
| | | | | Reviewed-by: Alyssa Rosenzweig <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4760>
* mesa: report GL_INVALID_OPERATION for invalid glTextureBuffer targetMarek Olšák2020-04-291-9/+9
| | | | | | | | | | | This fixes: KHR-GL46.direct_state_access.textures_buffer_errors KHR-GL46.direct_state_access.textures_buffer_range_errors Fixes: 98e64e538af - main: Added entry point for glTextureBuffer Reviewed-by: Timothy Arceri <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4759>
* mesa: Follow OpenGL conversion rules for values that exceed storage sizeDylan Baker2020-04-291-4/+33
| | | | | | | | | | | | | | | | | | | Section 2.2.2 (Data Conversions For State Query Commands) of the OpenGL 4.5 spec says: Following these steps, if a value is so large in magnitude that it cannot be represented by the returned data type, then the nearest value representable using that type is returned. The current code doesn't do the correct thing, because it truncates a long (potentially a 64bit values) to an int. Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/2828 Fixes: 53c36dfcfe3eb3749a53267f054870280afb0d71 ("replace IROUND with util functions") Reviewed-by: Matt Turner <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4673>
* mesa/st: call _mesa_initialize() earlyErik Faye-Lund2020-04-271-0/+2
| | | | | | | | This allows drivers to reliably do things like using the GLSL type-system during initialization. Reviewed-by: Marek Olšák <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4765>
* mesa/main: one_time_init() -> _mesa_initialize()Erik Faye-Lund2020-04-272-3/+6
| | | | | | | | | | | | This exposes the logic inside one_time_init() as _mesa_initialize(), so drivers who needs to use functionality initialized in one_time_init earlier if they need. This means we can reliably use the GLSL type-system when compiling driver built-in shaders. Reviewed-by: Marek Olšák <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4765>
* mesa/main: Do not pass context to one_time_initErik Faye-Lund2020-04-271-6/+6
| | | | | | | | | There's no longer any reason to pass the context down to one_time_init, because we always do the same thing regardless of the context, and we don't change the context. Reviewed-by: Marek Olšák <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4765>
* mesa/main: do not init remap-table per apiErik Faye-Lund2020-04-271-3/+0
| | | | | | | | | | This hasn't really been nessecary since 8386088e3dc ("dispatch: stop using _mesa_create_exec_table_es1() for GLES1."), when we stopped diverging the logic here based on the context-API. So let's simplify the code a bit. Reviewed-by: Marek Olšák <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4765>
* mesa/main: do not pass context to one-time extension initErik Faye-Lund2020-04-273-7/+7
| | | | | | | | | _mesa_problem doesn't use the ctx argument for anything, so there's no reason to pass it. This saves us from needing a context passed down this code-path in the first place. Reviewed-by: Marek Olšák <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4765>
* mesa/main: do not store unrecognized extensions in contextErik Faye-Lund2020-04-272-19/+18
| | | | | | | | | | | | | We process extension overrides only when we initialize the first context, which means that unrecognized extensions only appear in the first context created. Let's instead store them in a global array, so we can apply them to all contexts. This has the added benefit of making the initialization of the first context less special, which allows us to clean up code a bit more. Reviewed-by: Marek Olšák <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4765>
* mesa: Skip 3-byte array formats in _mesa_array_format_flip_channelsMichel Dänzer2020-04-271-1/+1
| | | | | | | | | | | | | Byte swapping makes no sense for 3-byte formats: Swapping the order of 2 or 4 bytes at a time would inevitably result in bytes getting mixed up between neighbouring pixels. Fixes crash with a debugging build on a big endian machine due hitting the unreachable() at the end of the function. Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/2665 Reviewed-by: Marek Olšák <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4735>
* mesa: replace GLenum target with gl_shader_stage in NewProgramMarek Olšák2020-04-2711-64/+51
| | | | | | | | So that the GLSL compiler doesn't have to use the GLenum conversion functions. Reviewed-by: Timothy Arceri <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4756>
* mesa: extend _mesa_bind_vertex_buffer to take ownership of the buffer referenceMarek Olšák2020-04-276-17/+28
| | | | | | | | | This reduces overhead of _mesa_reference_buffer_object_ from 6% to 4% with glthread when profiling the game "torcs" with non-VBO data uploaded by glthread. Acked-by: Pierre-Eric Pelloux-Prayer <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4758>
* mesa: add offset_is_int32 param into _mesa_bind_vertex_buffer for glthreadMarek Olšák2020-04-276-17/+21
| | | | | | | | glthread will pass signed integer offsets, so don't reset negative offsets to 0 there. Acked-by: Pierre-Eric Pelloux-Prayer <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4758>