mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-05 07:28:11 +02:00
nvc0: rework nvc0_compute_validate_program()
Reduce the amount of duplicated code by re-using nvc0_program_validate(). While we are at it, change the prototype to return void and remove nvc0_compute.h which is now useless. Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com> Acked-by: Pierre Moreau <pierre.morrow@free.fr> Acked-by: Ilia Mirkin <imirkin@alum.mit.edu>
This commit is contained in:
parent
e1f5c76047
commit
aad48f8691
6 changed files with 20 additions and 44 deletions
|
|
@ -150,7 +150,6 @@ NVC0_C_SOURCES := \
|
|||
nvc0/gm107_texture.xml.h \
|
||||
nvc0/nvc0_3d.xml.h \
|
||||
nvc0/nvc0_compute.c \
|
||||
nvc0/nvc0_compute.h \
|
||||
nvc0/nvc0_compute.xml.h \
|
||||
nvc0/nvc0_context.c \
|
||||
nvc0/nvc0_context.h \
|
||||
|
|
|
|||
|
|
@ -23,7 +23,8 @@
|
|||
*/
|
||||
|
||||
#include "nvc0/nvc0_context.h"
|
||||
#include "nvc0/nvc0_compute.h"
|
||||
|
||||
#include "nvc0/nvc0_compute.xml.h"
|
||||
|
||||
int
|
||||
nvc0_screen_compute_setup(struct nvc0_screen *screen,
|
||||
|
|
@ -120,34 +121,6 @@ nvc0_screen_compute_setup(struct nvc0_screen *screen,
|
|||
return 0;
|
||||
}
|
||||
|
||||
bool
|
||||
nvc0_compute_validate_program(struct nvc0_context *nvc0)
|
||||
{
|
||||
struct nvc0_program *prog = nvc0->compprog;
|
||||
|
||||
if (prog->mem)
|
||||
return true;
|
||||
|
||||
if (!prog->translated) {
|
||||
prog->translated = nvc0_program_translate(
|
||||
prog, nvc0->screen->base.device->chipset, &nvc0->base.debug);
|
||||
if (!prog->translated)
|
||||
return false;
|
||||
}
|
||||
if (unlikely(!prog->code_size))
|
||||
return false;
|
||||
|
||||
if (likely(prog->code_size)) {
|
||||
if (nvc0_program_upload_code(nvc0, prog)) {
|
||||
struct nouveau_pushbuf *push = nvc0->base.pushbuf;
|
||||
BEGIN_NVC0(push, NVC0_CP(FLUSH), 1);
|
||||
PUSH_DATA (push, NVC0_COMPUTE_FLUSH_CODE);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
static void
|
||||
nvc0_compute_validate_samplers(struct nvc0_context *nvc0)
|
||||
{
|
||||
|
|
@ -292,8 +265,7 @@ nvc0_compute_validate_globals(struct nvc0_context *nvc0)
|
|||
static bool
|
||||
nvc0_compute_state_validate(struct nvc0_context *nvc0)
|
||||
{
|
||||
if (!nvc0_compute_validate_program(nvc0))
|
||||
return false;
|
||||
nvc0_compprog_validate(nvc0);
|
||||
if (nvc0->dirty_cp & NVC0_NEW_CP_CONSTBUF)
|
||||
nvc0_compute_validate_constbufs(nvc0);
|
||||
if (nvc0->dirty_cp & NVC0_NEW_CP_DRIVERCONST)
|
||||
|
|
|
|||
|
|
@ -1,9 +0,0 @@
|
|||
#ifndef NVC0_COMPUTE_H
|
||||
#define NVC0_COMPUTE_H
|
||||
|
||||
#include "nvc0/nvc0_compute.xml.h"
|
||||
|
||||
bool
|
||||
nvc0_compute_validate_program(struct nvc0_context *nvc0);
|
||||
|
||||
#endif /* NVC0_COMPUTE_H */
|
||||
|
|
@ -254,6 +254,7 @@ void nvc0_tctlprog_validate(struct nvc0_context *);
|
|||
void nvc0_tevlprog_validate(struct nvc0_context *);
|
||||
void nvc0_gmtyprog_validate(struct nvc0_context *);
|
||||
void nvc0_fragprog_validate(struct nvc0_context *);
|
||||
void nvc0_compprog_validate(struct nvc0_context *);
|
||||
|
||||
void nvc0_tfb_validate(struct nvc0_context *);
|
||||
|
||||
|
|
|
|||
|
|
@ -28,6 +28,8 @@
|
|||
#include "nvc0/nvc0_context.h"
|
||||
#include "nvc0/nvc0_query_hw.h"
|
||||
|
||||
#include "nvc0/nvc0_compute.xml.h"
|
||||
|
||||
static inline void
|
||||
nvc0_program_update_context_state(struct nvc0_context *nvc0,
|
||||
struct nvc0_program *prog, int stage)
|
||||
|
|
@ -256,6 +258,19 @@ nvc0_gmtyprog_validate(struct nvc0_context *nvc0)
|
|||
nvc0_program_update_context_state(nvc0, gp, 3);
|
||||
}
|
||||
|
||||
void
|
||||
nvc0_compprog_validate(struct nvc0_context *nvc0)
|
||||
{
|
||||
struct nouveau_pushbuf *push = nvc0->base.pushbuf;
|
||||
struct nvc0_program *cp = nvc0->compprog;
|
||||
|
||||
if (cp && !nvc0_program_validate(nvc0, cp))
|
||||
return;
|
||||
|
||||
BEGIN_NVC0(push, NVC0_CP(FLUSH), 1);
|
||||
PUSH_DATA (push, NVC0_COMPUTE_FLUSH_CODE);
|
||||
}
|
||||
|
||||
void
|
||||
nvc0_tfb_validate(struct nvc0_context *nvc0)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -23,7 +23,6 @@
|
|||
*/
|
||||
|
||||
#include "nvc0/nvc0_context.h"
|
||||
#include "nvc0/nvc0_compute.h"
|
||||
#include "nvc0/nve4_compute.h"
|
||||
|
||||
#include "codegen/nv50_ir_driver.h"
|
||||
|
|
@ -306,8 +305,7 @@ nve4_compute_set_tex_handles(struct nvc0_context *nvc0)
|
|||
static bool
|
||||
nve4_compute_state_validate(struct nvc0_context *nvc0)
|
||||
{
|
||||
if (!nvc0_compute_validate_program(nvc0))
|
||||
return false;
|
||||
nvc0_compprog_validate(nvc0);
|
||||
if (nvc0->dirty_cp & NVC0_NEW_CP_TEXTURES)
|
||||
nve4_compute_validate_textures(nvc0);
|
||||
if (nvc0->dirty_cp & NVC0_NEW_CP_SAMPLERS)
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue