Commit Graph

30259 Commits

Author SHA1 Message Date
espes c36d60100f masks must be reset for clear 2015-07-08 04:35:35 +10:00
espes 3a35fc06b1 im bad at git add --patch 2015-07-08 04:05:51 +10:00
espes 8c5e15f2d9 fix sphinx 2015-07-08 04:03:02 +10:00
espes 614a22b49b not obviously less broken 2015-07-08 03:35:50 +10:00
espes ba45e5249f probably broken stenciling 2015-07-08 02:52:08 +10:00
espes e80aca79f1 still confused 2015-07-07 23:49:45 +10:00
espes 1d8adc942f im confused about when to do a framebuffer update 2015-07-07 21:07:36 +10:00
espes 0a2d1ef9e4 don't update unmodified uniforms. makes apitrace faster 2015-07-07 21:06:17 +10:00
espes 49abc9afae depth test. this is broken 2015-07-07 19:39:19 +10:00
espes 29d7473484 start on doing framebuffers properly 2015-07-07 19:02:55 +10:00
espes 694cedb8e0 TextureState -> TextureShape 2015-07-07 16:54:09 +10:00
espes 0b6291b46f lock even less... 2015-07-07 15:35:03 +10:00
espes 5a7e1e6532 who needs this lock 2015-07-07 15:19:07 +10:00
espes dd34dda3c6 less ridiculously inefficient puller 2015-07-07 15:06:21 +10:00
espes cf84c27491 get rid of some pfifo shadow 2015-07-07 14:45:35 +10:00
espes a290a7fae6 move texture data hash out of texture state 2015-07-07 02:15:07 +10:00
espes c14aa2e038 yeah alright, don't use magic numbers for blend factors 2015-07-06 22:59:28 +10:00
espes a71d2433dc put texture cache behind flag 2015-07-06 17:51:13 +10:00
espes 228dc80ef3 make the texture cache smaller again 2015-07-06 17:21:33 +10:00
espes 9d9c29bd34 minor psh memory leak 2015-07-06 17:20:56 +10:00
espes bd2e03b5ba add g-lru-cache -_- 2015-07-06 14:25:12 +10:00
espes da30a91d6f make the texture cache bigger 2015-07-06 14:23:34 +10:00
espes 1e026f54d6 dont crash when setting mipmap filters on linear textures... 2015-07-06 14:22:55 +10:00
espes 5f83b50954 lru 2015-07-06 14:04:33 +10:00
espes 033157be3c texture caching again 2015-07-06 13:17:12 +10:00
espes d83e0307ec minor cleanups to swizzle 2015-07-06 03:07:24 +10:00
espes 6cb87ee1e5 minor mcpx changes 2015-07-06 01:53:10 +10:00
espes b2d970b7b3 stub YUV2 texture format 2015-07-06 01:36:42 +10:00
espes 452d048b2c cache shader constant locations 2015-07-06 01:35:54 +10:00
espes 12f2f5f668 field gpio hack 2015-07-05 22:58:01 +10:00
espes c2ba186cbb kinda wire apu ep up 2015-07-05 13:29:49 +10:00
espes cfd7431c21 blending -_- 2015-07-04 23:02:40 +10:00
espes 79e8643d16 a couple more dsp instructions 2015-07-04 21:32:02 +10:00
espes b21312d8ac this glFinish is useless 2015-07-03 16:05:28 +10:00
espes 3afc4facd3 probably don't divide by zero when normalizing vsh output depth 2015-07-03 15:55:45 +10:00
espes 60c0d7e433 use more specific internal formats, like wine 2015-07-03 02:08:39 +10:00
espes 60eab9e4f4 new texutre format 2015-07-03 01:42:16 +10:00
espes f49702010c fix handling of inline array strides 2015-07-02 23:19:30 +10:00
espes a1872ce97e fix inline UB_D3D attributes; call frame terminator for debugging 2015-07-02 22:03:30 +10:00
espes fa4abd286b set gl context once only in puller thread 2015-07-02 21:56:56 +10:00
espes d098d7f86d puller thread shold be joinable? 2015-07-02 21:55:29 +10:00
espes 5a131570bb rejig glo extension stuff 2015-07-02 21:54:33 +10:00
espes b9eda55bfb stub out acpi gpio regs 2015-07-02 16:55:41 +10:00
espes 9c1123bd4e (╯°□°)╯︵ ┻━┻ 2015-06-21 22:04:35 +10:00
espes 68db7724c7 dsp debug print to stdout 2015-06-21 22:03:43 +10:00
espes b1dfbc6037 maybe this is more correct handling of flip_stall? 2015-06-21 16:41:10 +10:00
Peter Crosthwaite ae1f36f12b cpus: Don't kick un-realized cpus.
following a464982499, it's now possible for
there to be attempts to take the BQL before CPUs have been realized in
cases where a machine model inits peripherals before the first CPU.

BQL lock aquisition kicks the first_cpu, leading to a segfault if this
happens pre-realize. Guard the CPU kick routine to perform no action for
a CPU that doesn't exist or doesn't have a thread yet.

There was a fix to this with commit
6b49809c59, but the check there misses
the case where the CPU has been inited and not realized. Strengthen the
check to make sure that the first_cpu has a thread (i.e. it is
realized) before allowing the kick.

Signed-off-by: Peter Crosthwaite <peter.crosthwaite@xilinx.com>
Message-Id: <1427107689-6946-1-git-send-email-peter.crosthwaite@xilinx.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2015-06-21 14:46:20 +10:00
Paolo Bonzini c5d92c871f cpus: be more paranoid in avoiding deadlocks
For good measure, ensure that the following sequence:

   thread 1 calls qemu_mutex_lock_iothread
   thread 2 calls qemu_mutex_lock_iothread
   VCPU thread are created
   VCPU thread enters execution loop

results in the VCPU threads letting the other two threads run
and obeying iothread_requesting_mutex even if the VCPUs are
not halted.  To do this, check iothread_requesting_mutex
before execution starts.

Tested-by: Leon Alrae <leon.alrae@imgtec.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2015-06-21 14:46:11 +10:00
Paolo Bonzini 620f0af8d5 cpus: fix deadlock and segfault in qemu_mutex_lock_iothread
When two threads (other than the low-priority TCG VCPU thread)
are competing for the iothread lock, a deadlock can happen.  This
is because iothread_requesting_mutex is set to false by the first
thread that gets the mutex, and then the VCPU thread might never
yield from the execution loop.  If iothread_requesting_mutex is
changed from a bool to a counter, the deadlock is fixed.

However, there is another bug in qemu_mutex_lock_iothread that
can be triggered by the new call_rcu thread.  The bug happens
if qemu_mutex_lock_iothread is called before the CPUs are
created.  In that case, first_cpu is NULL and the caller
segfaults in qemu_mutex_lock_iothread.  To fix this, just
do not do the kick if first_cpu is NULL.

Reported-by: Leon Alrae <leon.alrae@imgtec.com>
Reported-by: Andreas Gustafsson <gson@gson.org>
Tested-by: Leon Alrae <leon.alrae@imgtec.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2015-06-21 14:43:30 +10:00
espes f0184232aa dont busywait for surface flip 2015-06-21 11:50:53 +10:00