summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* st/nine: Fix wrong mask in ff vsAxel Davy2016-10-101-1/+1
| | | | | Signed-off-by: Axel Davy <[email protected]> Reviewed-by: Patrick Rudolph <[email protected]>
* st/nine: Fix tweening factor computationAxel Davy2016-10-101-2/+2
| | | | | | | The computation was reversed. Deduced by tests on windows. Signed-off-by: Axel Davy <[email protected]>
* st/nine: Disable ff vertex blending if required inputs are missingAxel Davy2016-10-101-2/+12
| | | | | | This behaviour has been partially tested on windows. Signed-off-by: Axel Davy <[email protected]>
* st/nine: Use materials if source is not given.Axel Davy2016-10-101-4/+5
| | | | | | Deduced by test on windows. Signed-off-by: Axel Davy <[email protected]>
* st/nine: Fix ff SPECULARENABLEAxel Davy2016-10-101-10/+3
| | | | | | | | | | | | | | | We were (wrongly) adding specular to diffuse in vertex shaders when SPECULARENABLE was set. However the spec says specular has to be added after texture processing (which is in ps). Besides SPECULARENABLE is flagged as a pixel state. There was unused support for SPECULARENABLE in the ps ff code. Remove the vs code, and use the ps code. Signed-off-by: Axel Davy <[email protected]>
* st/nine: Undefined specular should be full of zerosAxel Davy2016-10-101-6/+6
| | | | | Signed-off-by: Axel Davy <[email protected]> Reviewed-by: Patrick Rudolph <[email protected]>
* st/nine: Implement normal transformation with vertex blendingAxel Davy2016-10-101-5/+21
| | | | | | | The formula is different from the one of the spec, but otherwise nothing particular. Signed-off-by: Axel Davy <[email protected]>
* st/nine: Increase MaxVertexBlendMatrixIndexAxel Davy2016-10-102-5/+5
| | | | | | Modern cards do advertise 8. Signed-off-by: Axel Davy <[email protected]>
* st/nine: Compact ff vs constants a bitAxel Davy2016-10-101-9/+9
| | | | | | | | There are several holes. This patch reduces the holes a bit, which reduces the size of the constant buffer uploaded. Signed-off-by: Axel Davy <[email protected]>
* st/nine: Fix vertex blending aVtx computationAxel Davy2016-10-101-17/+10
| | | | | | | There was an multiplication by the world matrix 0 which had nothing to do there. Signed-off-by: Axel Davy <[email protected]>
* st/nine: Reorganize ff vtx processingAxel Davy2016-10-101-52/+72
| | | | | | | The new order simplified the code a bit for next patches. Signed-off-by: Axel Davy <[email protected]>
* st/nine: Small simplification for position_t and fogAxel Davy2016-10-101-6/+3
| | | | | | position_t disables fog computation. Signed-off-by: Axel Davy <[email protected]>
* st/nine: Cleaning code for vs temporariesAxel Davy2016-10-101-98/+135
| | | | | | | | | | | | | | | | | This has been a real mess up to now: the temporaries were allocated once, and shared after that between the different parts of the code. To help maintaining the code, the temporaries are now allocated and released on need. As surprising as it could be, this patch, which was supposed to introduce no behaviour change, actually solved a visual bug observed on a sample program. This was due to ureg_normalize3 polluting a temporary variable. Signed-off-by: Axel Davy <[email protected]>
* st/nine: No need for the local flag for temporaries in ffAxel Davy2016-10-101-2/+2
| | | | | Signed-off-by: Axel Davy <[email protected]> Reviewed-by: Patrick Rudolph <[email protected]>
* st/nine: Handle D3DRS_NORMALIZENORMALSAxel Davy2016-10-101-2/+5
| | | | | | | | When this state is set, the normals computed in the vs ff shader should be normalized. Signed-off-by: Axel Davy <[email protected]> Reviewed-by: Patrick Rudolph <[email protected]>
* st/nine: Initial ProcessVertices supportAxel Davy2016-10-1011-69/+735
| | | | | | | | For now only VS 3 support is implemented. This enables The Sims 2 to work. Signed-off-by: Axel Davy <[email protected]>
* st/nine: Partial software vertex processing supportAxel Davy2016-10-108-60/+322
| | | | | | | | | | | | | | | | | | | | | | | | Software Vertex Processing allows: . Less limitations for shaders (more loops, etc) . Less limitations for ff (more enabled lights, 255 matrices for VertexBlend) In particular shaders can get more constants. This patch implements support for this (not using software rendering, but hardware rendering, as llvmpipe and dx10+ hw have the same limits...) This is considered a second class path. Even apps asking for "Mixed Vertex processing" (ie the ability to switch to swvp on demand) do not use the feature much. Some just initialize more constants than the normal limit at the start of the application, but never use more than the normal limit. When the apps do not need the software vertex processing features, they do not seem to turn it on. This means it is ok if that path is slow. Thus no care has been made to make the path optimized. Signed-off-by: Axel Davy <[email protected]>
* st/nine: Rework vs int and bool constants bufferAxel Davy2016-10-104-24/+37
| | | | | | This will help to support swvp constants. Signed-off-by: Axel Davy <[email protected]>
* st/nine: Change dirty tracking for vs int and bool constantsAxel Davy2016-10-104-22/+56
| | | | | | | This change makes easier to introduce tracking for swvp constants. Signed-off-by: Axel Davy <[email protected]>
* st/nine: Drop unused constant upload pathAxel Davy2016-10-103-210/+4
| | | | | | | | | This path has been disabled for some time because of some bugs with it. It hasn't been updated to the new features, and is not faster. Signed-off-by: Axel Davy <[email protected]> Reviewed-by: Patrick Rudolph <[email protected]>
* st/nine: Add support for swvp constants in shadersAxel Davy2016-10-103-37/+125
| | | | | | | swvp has relaxed limits (more nested loops, etc). In particular it enables more constants. Signed-off-by: Axel Davy <[email protected]>
* st/nine: Initial mixed vertex processing supportAxel Davy2016-10-102-5/+16
| | | | | | | | | | In mixed vertex processing, the user can enable or disable software vertex processing. It is on hardware by default. This feature is not a state, and thus the setting doesn't need to be recorded by stateblocks. Signed-off-by: Axel Davy <[email protected]>
* st/nine: Implement SetNPatchModeAxel Davy2016-10-101-1/+1
| | | | Signed-off-by: Axel Davy <[email protected]>
* st/nine: Implement D3DUSAGE_SOFTWAREPROCESSINGAxel Davy2016-10-101-2/+3
| | | | | | | | Buffers with this flag must be usable with both software and hardware vertex processing. Use Staging for fast cpu access. Signed-off-by: Axel Davy <[email protected]> Reviewed-by: Patrick Rudolph <[email protected]>
* st/nine: Allocate more space for ATI1Patrick Rudolph2016-10-102-6/+17
| | | | | | | | | | | | | | ATIx are "unknown" formats that do not follow block format conventions. Tests showed that pitch*height bytes are allocated. apitrace used to depend on this behaviour. It used to copy more bytes than it has to for the ATI1 block format, but it didn't crash on Windows. Increase buffersize for ATI1 to fix this crash. The same issue was present in WINE but a patch has been sent by me. Signed-off-by: Patrick Rudolph <[email protected]> Reviewed-by: Axel Davy <[email protected]>
* st/nine: Add missing breakPatrick Rudolph2016-10-101-0/+1
| | | | | | | Add missing break instruction. Signed-off-by: Patrick Rudolph <[email protected]> Reviewed-by: Axel Davy <[email protected]>
* st/nine: Implement relative addressing for ps inputsAxel Davy2016-10-101-3/+27
| | | | | | | | | To implement the feature we copy the ps inputs to a temp array. This is not optimal for performance, but it is the simplest solution. This is a feature that is very very rarely used. Signed-off-by: Axel Davy <[email protected]>
* st/nine: Wait for pending tasks to execute in swapchainAxel Davy2016-10-101-0/+4
| | | | | | Fixes crash after Reset() when using thread_submit=true Signed-off-by: Axel Davy <[email protected]>
* st/nine: Use fixed size arrays for swapchain buffersAxel Davy2016-10-102-40/+11
| | | | Signed-off-by: Axel Davy <[email protected]>
* st/nine: Fix buffer count check for Ex devicesPatrick Rudolph2016-10-101-5/+4
| | | | | Signed-off-by: Patrick Rudolph <[email protected]> Reviewed-by: Axel Davy <[email protected]>
* st/nine: Disable seamless cubemap for d3dAxel Davy2016-10-102-2/+2
| | | | | | d3d9 doesn't have seamless cubemap. Signed-off-by: Axel Davy <[email protected]>
* st/nine: Fix some check flagsAxel Davy2016-10-101-11/+12
| | | | | | | Uses the new defines introduced in previous commit. See comment in the commit for more explanation. Signed-off-by: Axel Davy <[email protected]>
* st/nine: Unify some check flagsAxel Davy2016-10-102-4/+12
| | | | | | The new defines will be reused in a later patch. Signed-off-by: Axel Davy <[email protected]>
* gallium/util: Really allow aliasing of dst for u_box_union_*Axel Davy2016-10-101-11/+20
| | | | | | | | | | | | | | | | Gallium nine relies on aliasing to work with this function. Without this patch, dirty region tracking was incorrect, which could lead to incorrect textures or vertex buffers. Fixes several game bugs with nine. Fixes https://github.com/iXit/Mesa-3D/issues/234 Signed-off-by: Axel Davy <[email protected]> Reviewed-by: Patrick Rudolph <[email protected]> Reviewed-by: Nicolai Hähnle <[email protected]> Reviewed-by: Roland Scheidegger <[email protected]> Reviewed-by: Edward O'Callaghan <[email protected]> Cc: "12.0" <[email protected]>
* softpipe: Cap to 2 GB on 32 bitsAxel Davy2016-10-101-0/+6
| | | | | | | | | | | | | | On 32 bits system, application memory is quite limited. softpipe uses application memory. To help prevent memory exhaustion, limit reported memory availability to 2GB. Some gallium nine apps do check reported memory by allocating resources until memory is full. Gallium nine refuses allocations when 80% of the reported memory limit is used. This change helps some apps to start. Signed-off-by: Axel Davy <[email protected]> Reviewed-by: Roland Scheidegger <[email protected]>
* llvmpipe: Cap to 2 GB on 32 bitsAxel Davy2016-10-101-0/+6
| | | | | | | | | | | | | | On 32 bits system, application memory is quite limited. llvmpipe uses application memory. To help prevent memory exhaustion, limit reported memory availability to 2GB. Some gallium nine apps do check reported memory by allocating resources until memory is full. Gallium nine refuses allocations when 80% of the reported memory limit is used. This change helps some apps to start. Signed-off-by: Axel Davy <[email protected]> Reviewed-by: Roland Scheidegger <[email protected]>
* gallium/os: Fix overflow on 32 bitsAxel Davy2016-10-101-4/+10
| | | | | | | | | | | | | On systems with more than 4GB of ram, os_get_total_physical_memory was triggering an integer overflow for the linux and haiku path, when on 32 bits. Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=94561 Signed-off-by: Axel Davy <[email protected]> Reviewed-by: Roland Scheidegger <[email protected]> Reviewed-by: Marek Olšák <[email protected]>
* st/nine: Memset pipe_resource templatesAxel Davy2016-10-102-0/+8
| | | | | | | | | | | | Fixes regression introduced by ecd6fce2611e88ff8468a354cff8eda39f260a31 and is more future proof than just clearing the next field. Other nine usages did already zero out the templates. Signed-off-by: Axel Davy <[email protected]> Acked-by: Edward O'Callaghan <[email protected]>
* nvc0: fix valid range for shader buffersSamuel Pitoiset2016-10-103-0/+3
| | | | | | | | When offset != 0, the valid range was wrong because the second argument of util_range_add() is end, not size. Signed-off-by: Samuel Pitoiset <[email protected]> Reviewed-by: Ilia Mirkin <[email protected]>
* nvc0/ir: fix overwriting of value backing non-constant gather offsetIlia Mirkin2016-10-101-2/+2
| | | | | | | | | | | | | Normally the value is an immediate, which is moved to some temporary, so there's no problem. In the case of a non-constant offset (as allowed by ARB_gpu_shader5), we have to take care to copy it first before using it to build up the bits. This fixes a compilation error observed in F1 2015. Signed-off-by: Ilia Mirkin <[email protected]> Reviewed-by: Samuel Pitoiset <[email protected]> Cc: [email protected]
* glsl: Add missing cache_destroy stub function.Vinson Lee2016-10-101-0/+5
| | | | | | | | | | | | CC glsl/tests/cache_test.o glsl/tests/cache_test.c: In function ‘test_cache_create’: glsl/tests/cache_test.c:160:4: error: implicit declaration of function ‘cache_destroy’ [-Werror=implicit-function-declaration] cache_destroy(cache); ^ Fixes: 87ab26b2ab35 ("glsl: Add initial functions to implement an on-disk cache") Signed-off-by: Vinson Lee <[email protected]> Reviewed-by: Timothy Arceri <[email protected]>
* docs: Mark GL_OES_viewport_array done on i965Anuj Phogat2016-10-101-1/+1
| | | | | Signed-off-by: Anuj Phogat <[email protected]> Reviewed-by: Dylan Baker <[email protected]>
* egl: Unify the EGLint/EGLAttrib paths in eglCreateSync* (v3)Chad Versace2016-10-105-52/+34
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Pre-patch, there were two code paths for parsing EGLSync attribute lists: one path for old-style EGLint lists, used by eglCreateSyncKHR, and another for new-style EGLAttrib lists, used by eglCreateSync (1.5) and eglCreateSync64 (EGL_KHR_cl_event2). There were two attrib_list parsing functions, _eglParseSyncAttribList(_EGLSync *sync, const EGLint *attrib_list) _eglParseSyncAttribList64(_EGLSync *sync, const EGLattrib *attrib_list) This patch unifies the two attrib_list parsing functions into one, _eglParseSyncAttribList(_EGLSync *sync, const EGLattrib *attrib_list) Many internal EGLSync function signatures had *two* attrib_list parameters to accomodate both code paths: one parameter was an EGLint list and other an EGLAttrib list. At most one of the parameters was allowed to be non-null. This patch removes the `EGLint *attrib_list` parameter, leaving only the `EGLAttrib *attrib_list` parameter, for all internal EGLSync functions. v2: - Consistently use condition (sizeof(int_list[0]) == sizeof(attrib_list[0])). [for emil] v3: - Don't double-unlock the display in eglCreateSyncKHR. Reviewed-by: Emil Velikov <[email protected]> (v2)
* intel: Fix bash-specific redirection.Eric Anholt2016-10-101-1/+1
| | | | Reviewed-by: Lionel Landwerlin <[email protected]>
* gallium: Fix install-gallium-links.mk on non-bash /bin/shEric Anholt2016-10-101-2/+2
| | | | | | | | | | Debian uses dash by default, which doesn't do '+='. Fixes servo's osmesa-based headless testing system, which was looking for libOSMesa in the lib/ directory. Reviewed-by: Nicolai Hähnle <[email protected]> Reviewed-by: Emil Velikov <[email protected]> Cc: [email protected]
* nv50/ir: only stick one preret per functionIlia Mirkin2016-10-101-4/+7
| | | | | | | | | | | A function with multiple returns would have had multiple preret settings at the top of the function. While this is unlikely to have caused issues since we don't use functions in earnest, it could have in some cases overflowed the call stack, in case a function had a lot of early returns. Signed-off-by: Ilia Mirkin <[email protected]> Reviewed-by: Samuel Pitoiset <[email protected]>
* radeonsi: make more use of si_have_tgsi_computeNicolai Hähnle2016-10-101-3/+1
| | | | | Reviewed-by: Edward O'Callaghan <[email protected]> Reviewed-by: Marek Olšák <[email protected]>
* gallium/radeon: assign a name to LLVM output variables in debug buildsNicolai Hähnle2016-10-101-1/+6
| | | | | | | This can be helpful with R600_DEBUG=preoptir. Reviewed-by: Edward O'Callaghan <[email protected]> Reviewed-by: Marek Olšák <[email protected]>
* gallium/radeon: avoid redundant work with overlapping in/out arraysNicolai Hähnle2016-10-101-1/+4
| | | | | Reviewed-by: Edward O'Callaghan <[email protected]> Reviewed-by: Marek Olšák <[email protected]>
* radeonsi: support ARB_compute_variable_group_sizeNicolai Hähnle2016-10-107-19/+55
| | | | | | | | Not sure if it's possible to avoid programming the block size twice (once for the userdata and once for the dispatch). Reviewed-by: Edward O'Callaghan <[email protected]> Reviewed-by: Marek Olšák <[email protected]>