Displaying 20 results from an estimated 22 matches for "nr_cbufs".
Did you mean:
nr_buf
2014 Jan 17
2
[PATCH] nv50, nvc0: only clear out the buffers that we were asked to clear
...EAR_BUFFERS_A;
}
if (buffers & PIPE_CLEAR_DEPTH) {
@@ -425,12 +422,16 @@ nv50_clear(struct pipe_context *pipe, unsigned buffers,
mode |= NV50_3D_CLEAR_BUFFERS_S;
}
- BEGIN_NV04(push, NV50_3D(CLEAR_BUFFERS), 1);
- PUSH_DATA (push, mode);
-
- for (i = 1; i < fb->nr_cbufs; i++) {
+ if (mode) {
BEGIN_NV04(push, NV50_3D(CLEAR_BUFFERS), 1);
- PUSH_DATA (push, (i << 6) | 0x3c);
+ PUSH_DATA (push, mode);
+ }
+
+ for (i = 0; i < fb->nr_cbufs; i++) {
+ if (buffers & (PIPE_CLEAR_COLOR0 << i)) {
+ BEGIN_NV04(push, NV5...
2009 Apr 08
0
[PATCH/Gallium] nv50: update nv50_clear to new interface
...een->tesla;
@@ -37,21 +42,45 @@ nv50_clear(struct pipe_context *pipe, struct pipe_surface *ps,
struct pipe_scissor_state sc, s_sc = nv50->scissor;
unsigned dirty = nv50->dirty;
+ /* if 'no buffers' case is possible, change this to if/return */
+ assert(buffers && (s_fb.nr_cbufs > 0 || s_fb.zsbuf != NULL));
+
nv50->dirty = 0;
+ fb.nr_cbufs = 0;
- if (ps->format == PIPE_FORMAT_Z24S8_UNORM ||
- ps->format == PIPE_FORMAT_Z16_UNORM) {
- fb.nr_cbufs = 0;
- fb.zsbuf = ps;
+ if (buffers & PIPE_CLEAR_COLOR) {
+ /* Should we clear all color buffers (nv40 d...
2014 Jan 23
2
[Mesa-dev] [PATCH] nv50, nvc0: only clear out the buffers that we were asked to clear
...gt; @@ -425,12 +422,16 @@ nv50_clear(struct pipe_context *pipe, unsigned buffers,
>> mode |= NV50_3D_CLEAR_BUFFERS_S;
>> }
>>
>> - BEGIN_NV04(push, NV50_3D(CLEAR_BUFFERS), 1);
>> - PUSH_DATA (push, mode);
>> -
>> - for (i = 1; i < fb->nr_cbufs; i++) {
>> + if (mode) {
>> BEGIN_NV04(push, NV50_3D(CLEAR_BUFFERS), 1);
>> - PUSH_DATA (push, (i << 6) | 0x3c);
>> + PUSH_DATA (push, mode);
>> + }
>> +
>> + for (i = 0; i < fb->nr_cbufs; i++) {
>> + if (buffer...
2014 Jan 15
3
[PATCH] nv50, nvc0: don't crash on a null cbuf
...e.c
index 86b9a23..7d330c9 100644
--- a/src/gallium/drivers/nouveau/nv50/nv50_state_validate.c
+++ b/src/gallium/drivers/nouveau/nv50/nv50_state_validate.c
@@ -20,9 +20,17 @@ nv50_validate_fb(struct nv50_context *nv50)
PUSH_DATA (push, fb->height << 16);
for (i = 0; i < fb->nr_cbufs; ++i) {
- struct nv50_miptree *mt = nv50_miptree(fb->cbufs[i]->texture);
- struct nv50_surface *sf = nv50_surface(fb->cbufs[i]);
- struct nouveau_bo *bo = mt->base.bo;
+ struct nv50_miptree *mt;
+ struct nv50_surface *sf;
+ struct nouveau_bo *bo;
+
+ /...
2012 Jan 10
5
[PATCH 0/4] nvfx: rework render temps code and fixes
This patch series silences some unknown cap warnings and fixes up
coding style (patch 1+4).
The most important part of this series are the two patches in the
middle. They rework the state_fb code, so that we are able to
render to not 64 byte aligned targets, as this is the only real
use-case for render temporaries this allows us to drop temp code
completely and simplifies a lot
2009 Apr 10
0
[PATCH/Gallium] nv50_clear again (might work better)
...nv50_clear(struct pipe_context *pipe, unsigned buffers,
const float *rgba, double depth, unsigned stencil)
@@ -40,26 +47,32 @@ nv50_clear(struct pipe_context *pipe, unsigned buffers,
return;
if (buffers & PIPE_CLEAR_COLOR) {
- BEGIN_RING(chan, tesla, NV50TCL_CLEAR_COLOR(0), 4*fb->nr_cbufs);
- for (i = 0; i < fb->nr_cbufs; i++) {
- OUT_RING (chan, fui(rgba[0]));
- OUT_RING (chan, fui(rgba[1]));
- OUT_RING (chan, fui(rgba[2]));
- OUT_RING (chan, fui(rgba[3]));
- }
- mode |= 0x3c;
+ assert(fb->nr_cbufs > 0);
+ BEGIN_RING(chan, tesla, NV50TCL_CLEAR_COLOR(0),...
2014 Jan 23
0
[Mesa-dev] [PATCH] nv50, nvc0: only clear out the buffers that we were asked to clear
...amp; PIPE_CLEAR_DEPTH) {
> @@ -425,12 +422,16 @@ nv50_clear(struct pipe_context *pipe, unsigned buffers,
> mode |= NV50_3D_CLEAR_BUFFERS_S;
> }
>
> - BEGIN_NV04(push, NV50_3D(CLEAR_BUFFERS), 1);
> - PUSH_DATA (push, mode);
> -
> - for (i = 1; i < fb->nr_cbufs; i++) {
> + if (mode) {
> BEGIN_NV04(push, NV50_3D(CLEAR_BUFFERS), 1);
> - PUSH_DATA (push, (i << 6) | 0x3c);
> + PUSH_DATA (push, mode);
> + }
> +
> + for (i = 0; i < fb->nr_cbufs; i++) {
> + if (buffers & (PIPE_CLEAR_COLOR0 <&...
2014 Jan 23
0
[Mesa-dev] [PATCH] nv50, nvc0: only clear out the buffers that we were asked to clear
...50_clear(struct pipe_context *pipe, unsigned buffers,
>>> mode |= NV50_3D_CLEAR_BUFFERS_S;
>>> }
>>>
>>> - BEGIN_NV04(push, NV50_3D(CLEAR_BUFFERS), 1);
>>> - PUSH_DATA (push, mode);
>>> -
>>> - for (i = 1; i < fb->nr_cbufs; i++) {
>>> + if (mode) {
>>> BEGIN_NV04(push, NV50_3D(CLEAR_BUFFERS), 1);
>>> - PUSH_DATA (push, (i << 6) | 0x3c);
>>> + PUSH_DATA (push, mode);
>>> + }
>>> +
>>> + for (i = 0; i < fb->nr_cbufs; i++)...
2014 Feb 13
2
[PATCH] nv50: make sure to clear _all_ layers of all attachments
...BEGIN_NV04(push, NV50_3D(VIEWPORT_HORIZ(0)), 2);
PUSH_DATA (push, (width << 16) | dstx);
PUSH_DATA (push, (height << 16) | dsty);
@@ -402,6 +405,14 @@ nv50_clear(struct pipe_context *pipe, unsigned buffers,
if (!nv50_state_validate(nv50, NV50_NEW_FRAMEBUFFER, 9 + (fb->nr_cbufs * 2)))
return;
+ /* We have to clear ALL of the layers, not up to the min number of layers
+ * of any attachment. Don't touch 3d textures, they can't be arrays. The
+ * above nv50_state_validate call will have written to rt_array_mode. */
+ if (!(nv50->rt_array_mode &a...
2014 Jan 23
2
[PATCH v2] nv50, nvc0: clear out RT on a null cbuf
...PUSH_DATA (push, 64);
> + PUSH_DATA (push, 0);
> +}
>
> static void
> nv50_validate_fb(struct nv50_context *nv50)
> @@ -20,9 +33,18 @@ nv50_validate_fb(struct nv50_context *nv50)
> PUSH_DATA (push, fb->height << 16);
>
> for (i = 0; i < fb->nr_cbufs; ++i) {
> - struct nv50_miptree *mt = nv50_miptree(fb->cbufs[i]->texture);
> - struct nv50_surface *sf = nv50_surface(fb->cbufs[i]);
> - struct nouveau_bo *bo = mt->base.bo;
> + struct nv50_miptree *mt;
> + struct nv50_surface *sf;
> + str...
2009 Jul 12
0
[PATCH 2/3] nv50: fix viewport transform
...allium/drivers/nv50/nv50_state_validate.c
+++ b/src/gallium/drivers/nv50/nv50_state_validate.c
@@ -31,6 +31,11 @@ nv50_state_validate_fb(struct nv50_context *nv50)
struct pipe_framebuffer_state *fb = &nv50->framebuffer;
unsigned i, w, h, gw = 0;
+ nv50->fb_invert_y = 0;
+ if (fb->nr_cbufs && (fb->cbufs[0]->texture->tex_usage &
+ PIPE_TEXTURE_USAGE_DISPLAY_TARGET))
+ nv50->fb_invert_y = fb->cbufs[0]->height;
+
for (i = 0; i < fb->nr_cbufs; i++) {
struct pipe_texture *pt = fb->cbufs[i]->texture;
struct nouveau_bo *bo = nv50_mip...
2014 Jan 17
0
[PATCH v2] nv50, nvc0: clear out RT on a null cbuf
...EGIN_NV04(push, NV50_3D(RT_HORIZ(i)), 2);
+ PUSH_DATA (push, 64);
+ PUSH_DATA (push, 0);
+}
static void
nv50_validate_fb(struct nv50_context *nv50)
@@ -20,9 +33,18 @@ nv50_validate_fb(struct nv50_context *nv50)
PUSH_DATA (push, fb->height << 16);
for (i = 0; i < fb->nr_cbufs; ++i) {
- struct nv50_miptree *mt = nv50_miptree(fb->cbufs[i]->texture);
- struct nv50_surface *sf = nv50_surface(fb->cbufs[i]);
- struct nouveau_bo *bo = mt->base.bo;
+ struct nv50_miptree *mt;
+ struct nv50_surface *sf;
+ struct nouveau_bo *bo;
+
+ i...
2014 Jan 23
0
[PATCH v2] nv50, nvc0: clear out RT on a null cbuf
...+ PUSH_DATA (push, 0);
>> +}
>>
>> static void
>> nv50_validate_fb(struct nv50_context *nv50)
>> @@ -20,9 +33,18 @@ nv50_validate_fb(struct nv50_context *nv50)
>> PUSH_DATA (push, fb->height << 16);
>>
>> for (i = 0; i < fb->nr_cbufs; ++i) {
>> - struct nv50_miptree *mt = nv50_miptree(fb->cbufs[i]->texture);
>> - struct nv50_surface *sf = nv50_surface(fb->cbufs[i]);
>> - struct nouveau_bo *bo = mt->base.bo;
>> + struct nv50_miptree *mt;
>> + struct nv50_surface...
2014 Jun 18
1
[PATCH 1/2] nv30: tidy screen caps, add missing ones
Signed-off-by: Ilia Mirkin <imirkin at alum.mit.edu>
---
src/gallium/drivers/nouveau/nv30/nv30_screen.c | 33 +++++++++++++-------------
1 file changed, 17 insertions(+), 16 deletions(-)
diff --git a/src/gallium/drivers/nouveau/nv30/nv30_screen.c b/src/gallium/drivers/nouveau/nv30/nv30_screen.c
index 4baabaf..5c3d783 100644
--- a/src/gallium/drivers/nouveau/nv30/nv30_screen.c
+++
2015 May 24
2
[PATCH 1/2] nv30: avoid doing extra work on clear and hitting unexpected states
...pipe_framebuffer_state *fb = &nv30->framebuffer;
uint32_t colr = 0, zeta = 0, mode = 0;
- if (!nv30_state_validate(nv30, TRUE))
+ if (!nv30_state_validate(nv30, NV30_NEW_FRAMEBUFFER | NV30_NEW_SCISSOR, TRUE))
return;
if (buffers & PIPE_CLEAR_COLOR && fb->nr_cbufs) {
diff --git a/src/gallium/drivers/nouveau/nv30/nv30_context.h b/src/gallium/drivers/nouveau/nv30/nv30_context.h
index 7b32aae..592cdbe 100644
--- a/src/gallium/drivers/nouveau/nv30/nv30_context.h
+++ b/src/gallium/drivers/nouveau/nv30/nv30_context.h
@@ -204,7 +204,7 @@ void
nv30_render_vbo(struc...
2014 Jan 13
20
[PATCH 00/19] nv50: add sampler2DMS/GP support to get OpenGL 3.2
OK, so there's a bunch of stuff in here. The geometry stuff is based on the
work started by Bryan Cain and Christoph Bumiller.
Patches 01-12: Add support for geometry shaders and fix related issues
Patches 13-14: Make it possible for fb clears to operate on texture attachments
with an explicit layer set (as is allowed in gl 3.2).
Patches 15-17: Make ARB_texture_multisample work
2009 Aug 25
3
[Bug 23505] New: KDE's Kubrick has problems with xf86-video-nouveau driver
http://bugs.freedesktop.org/show_bug.cgi?id=23505
Summary: KDE's Kubrick has problems with xf86-video-nouveau
driver
Product: Mesa
Version: git
Platform: Other
OS/Version: All
Status: NEW
Severity: normal
Priority: medium
Component: Drivers/DRI/nouveau
AssignedTo: nouveau at
2016 Jun 05
0
[RFC PATCH] nouveau: add locking
...;t affect CLEAR_BUFFERS */
- if (!nvc0_state_validate_3d(nvc0, NVC0_NEW_3D_FRAMEBUFFER))
+ if (!nvc0_state_validate_3d(nvc0, NVC0_NEW_3D_FRAMEBUFFER)) {
+ pipe_mutex_unlock(nvc0->screen->base.push_mutex);
return;
+ }
if (buffers & PIPE_CLEAR_COLOR && fb->nr_cbufs) {
BEGIN_NVC0(push, NVC0_3D(CLEAR_COLOR(0)), 4);
@@ -755,6 +784,8 @@ nvc0_clear(struct pipe_context *pipe, unsigned buffers,
(j << NVC0_3D_CLEAR_BUFFERS_LAYER__SHIFT));
}
}
+
+ pipe_mutex_unlock(nvc0->screen->base.push_mutex);
}
@@ -1148,8 +...
2014 Nov 27
0
[Mesa-dev] [RFC] tegra: Initial support
...> +{
> + struct tegra_context *context = to_tegra_context(pcontext);
> + struct pipe_framebuffer_state state;
> + unsigned i;
> +
> + if (fb) {
> + memcpy(&state, fb, sizeof(state));
> +
> + for (i = 0; i < fb->nr_cbufs; i++)
> + state.cbufs[i] = tegra_surface_unwrap(fb->cbufs[i]);
> +
> + while (i < PIPE_MAX_COLOR_BUFS)
> + state.cbufs[i++] = NULL;
> +
> + state.zsbuf = tegra_surface_unwrap(fb->zsbuf);
> +
> +...
2014 Nov 27
7
[RFC] tegra: Initial support
...mebuffer_state(struct pipe_context *pcontext,
+ const struct pipe_framebuffer_state *fb)
+{
+ struct tegra_context *context = to_tegra_context(pcontext);
+ struct pipe_framebuffer_state state;
+ unsigned i;
+
+ if (fb) {
+ memcpy(&state, fb, sizeof(state));
+
+ for (i = 0; i < fb->nr_cbufs; i++)
+ state.cbufs[i] = tegra_surface_unwrap(fb->cbufs[i]);
+
+ while (i < PIPE_MAX_COLOR_BUFS)
+ state.cbufs[i++] = NULL;
+
+ state.zsbuf = tegra_surface_unwrap(fb->zsbuf);
+
+ fb = &state;
+ }
+
+ context->gpu->set_framebuffer_state(context->gpu, fb);
+}
+
+static vo...